diff --git a/app.be47ebf66e0b4f16383e.js b/app.be47ebf66e0b4f16383e.js new file mode 100644 index 0000000..1b267db --- /dev/null +++ b/app.be47ebf66e0b4f16383e.js @@ -0,0 +1 @@ +(()=>{var e,n={4932:(e,n,t)=>{"use strict";function r(e){return Array.isArray(e)||ArrayBuffer.isView(e)}function o(e){return"function"==typeof e.GetHashCode}function i(e,n){return Object.getPrototypeOf(e).constructor===Object.getPrototypeOf(n).constructor}class s{constructor(e){this.iter=e}"System.Collections.Generic.IEnumerator`1.get_Current"(){return this.current}"System.Collections.IEnumerator.get_Current"(){return this.current}"System.Collections.IEnumerator.MoveNext"(){const e=this.iter.next();return this.current=e.value,!e.done}"System.Collections.IEnumerator.Reset"(){throw new Error("JS iterators cannot be reset")}Dispose(){}}function a(e){return"function"==typeof e.GetEnumerator?e.GetEnumerator():new s(e[Symbol.iterator]())}function l(e){return{[Symbol.iterator](){return this},next(){const n=e["System.Collections.IEnumerator.MoveNext"]();return{done:!n,value:n?e["System.Collections.IEnumerator.get_Current"]():void 0}}}}class c{constructor(e){this.factory=e,this.isValueCreated=!1}get Value(){return this.isValueCreated||(this.createdValue=this.factory(),this.isValueCreated=!0),this.createdValue}get IsValueCreated(){return this.isValueCreated}}function d(e,n){let t=e.toString(10);for(;t.length(e<<5)+e^n))}function b(e){if(null==e)return 0;switch(typeof e){case"boolean":return e?1:0;case"number":return h(e);case"string":return m(e);default:return o(e)?e.GetHashCode():r(e)?function(e){const n=e.length,t=new Array(n);for(let r=0;rb(e)))):h(f.id(e))}}function v(e){return null==e?0:o(e)?e.GetHashCode():h(f.id(e))}function y(e,n,t){if(null==e)return null==n;if(null==n)return!1;if(e.length!==n.length)return!1;for(let r=0;r0?n:t}f.idMap=new WeakMap,f.count=0;const k="__CURRIED__";function C(e,n){if(null==n||n.length>1)return n;let t;switch(e){case 2:t=(e,t)=>n(e)(t);break;case 3:t=(e,t,r)=>n(e)(t)(r);break;case 4:t=(e,t,r,o)=>n(e)(t)(r)(o);break;case 5:t=(e,t,r,o,i)=>n(e)(t)(r)(o)(i);break;case 6:t=(e,t,r,o,i,s)=>n(e)(t)(r)(o)(i)(s);break;case 7:t=(e,t,r,o,i,s,a)=>n(e)(t)(r)(o)(i)(s)(a);break;case 8:t=(e,t,r,o,i,s,a,l)=>n(e)(t)(r)(o)(i)(s)(a)(l);break;default:throw new Error("Uncurrying to more than 8-arity is not supported: "+e)}return t.__CURRIED__=n,t}function A(e,n,t){if(null!=n){if(k in n){n=n.__CURRIED__;for(let e=0;en.apply(void 0,t.concat([e]));case 2:return e=>r=>n.apply(void 0,t.concat([e,r]));case 3:return e=>r=>o=>n.apply(void 0,t.concat([e,r,o]));case 4:return e=>r=>o=>i=>n.apply(void 0,t.concat([e,r,o,i]));case 5:return e=>r=>o=>i=>s=>n.apply(void 0,t.concat([e,r,o,i,s]));case 6:return e=>r=>o=>i=>s=>a=>n.apply(void 0,t.concat([e,r,o,i,s,a]));case 7:return e=>r=>o=>i=>s=>a=>l=>n.apply(void 0,t.concat([e,r,o,i,s,a,l]));case 8:return e=>r=>o=>i=>s=>a=>l=>c=>n.apply(void 0,t.concat([e,r,o,i,s,a,l,c]));default:throw new Error("Partially applying to more than 8-arity is not supported: "+e)}}}function L(e,n=0){if(null!=e&&"object"==typeof e){if("function"==typeof e.toString)return e.toString();if(Symbol.iterator in e)return function(e){let n=0,t="[";for(const r of e){if(0===n)t+=L(r);else{if(100===n){t+="; ...";break}t+="; "+L(r)}n++}return t+"]"}(e);{const t=Object.getPrototypeOf(e).constructor;return t===Object&&n<10?"{ "+Object.entries(e).map((([e,t])=>e+" = "+L(t,n+1))).join("\n ")+" }":t.name}}return String(e)}class O{get name(){return this.cases()[this.tag]}toJSON(){return 0===this.fields.length?this.name:[this.name].concat(this.fields)}toString(){return function(e,n){if(0===n.length)return e;{let t="",r=!0;return 1===n.length?(t=L(n[0]),r=t.indexOf(" ")>=0):t=n.map((e=>L(e))).join(", "),e+(r?" (":" ")+t+(r?")":"")}}(this.name,this.fields)}GetHashCode(){const e=this.fields.map((e=>b(e)));return e.splice(0,0,h(this.tag)),g(e)}Equals(e){return this===e||!!i(this,e)&&this.tag===e.tag&&x(this.fields,e.fields)}CompareTo(e){return this===e?0:i(this,e)?this.tag===e.tag?w(this.fields,e.fields):this.tage+" = "+L(n))).join("\n ")+" }"}(this)}GetHashCode(){return function(e){return g(Object.values(e).map((e=>b(e))))}(this)}Equals(e){return function(e,n){if(e===n)return!0;if(i(e,n)){const t=Object.keys(e);for(let r=0;re,this.setter=n=>{e=n})}get contents(){return this.getter()}set contents(e){this.setter(e)}}class N{constructor(e,n,t,r){this.declaringType=e,this.tag=n,this.name=t,this.fields=r}}class R{constructor(e,n,t,r,o,i,s){this.fullname=e,this.generics=n,this.construct=t,this.parent=r,this.fields=o,this.cases=i,this.enumCases=s}toString(){return q(this)}GetHashCode(){return M(this)}Equals(e){return H(this,e)}}function D(e){return null!=e.generics?e.generics:[]}function M(e){return g([m(e.fullname),...D(e).map(M)])}function H(e,n){return""===e.fullname?""===n.fullname&&y(z(e),z(n),(([e,n],[t,r])=>e===t&&H(n,r))):e.fullname===n.fullname&&y(D(e),D(n),H)}function F(e,n,t,r){return new R(e,n,t,void 0,r)}function U(e,n,t,r){const o=new R(e,n,t,void 0,void 0,(()=>{const e=t.prototype.cases();return r().map(((n,t)=>new N(o,t,e[t],n)))}));return o}function B(e){return new R("Microsoft.FSharp.Core.FSharpOption`1",[e])}function j(e){return new R("Microsoft.FSharp.Collections.FSharpList`1",[e])}new R("System.Object"),new R("Microsoft.FSharp.Core.Unit"),new R("System.Char");const G=new R("System.String"),W=new R("System.Boolean");function q(e){const n=null==e.generics||function(e){return e.fullname.endsWith("[]")}(e)?[]:e.generics;return n.length>0?e.fullname+"["+n.map((e=>q(e))).join(",")+"]":e.fullname}function z(e){if(null!=e.fields)return e.fields();throw new Error(`${e.fullname} is not an F# record type`)}function K(e){if(!(e instanceof O))throw new Error("Value is not an F# union type")}var V;function J(e,n){switch(n){case 8:return e?[0,255]:[-128,127];case 16:return e?[0,65535]:[-32768,32767];case 32:return e?[0,4294967295]:[-2147483648,2147483647];default:throw new Error("Invalid bit size.")}}function Y(e,n,t,r,o){try{return o.contents=function(e,n,t,r,o){const i=function(e,n,t){const r=/^\s*([\+\-])?(0[xXoObB])?([0-9a-fA-F]+)\s*$/.exec(e.replace(/_/g,""));if(null!=r){const[,,e,o]=r;if(!function(e){switch(e){case 2:return/[^0-1]/;case 8:return/[^0-7]/;case 10:return/[^0-9]/;case 16:return/[^0-9a-fA-F]/;default:throw new Error("Invalid Base.")}}(t=t||function(e,n){if(n&V.AllowHexSpecifier)return 16;switch(e){case"0b":case"0B":return 2;case"0o":case"0O":return 8;case"0x":case"0X":return 16;default:return 10}}(e,n)).test(o))return function(e,n){const[,t,r,o]=e;return{sign:t||"",prefix:r||"",digits:o,radix:n}}(r,t)}return null}(e,n,void 0);if(null!=i){let e=Number.parseInt(i.sign+i.digits,i.radix);if(!Number.isNaN(e)){const[n,o]=J(!0,r);!t&&10!==i.radix&&e>=n&&e<=o&&(e=e<<32-r>>32-r);const[s,a]=J(t,r);if(e>=s&&e<=a)return e}}throw new Error("Input string was not in a correct format.")}(e,n,t,r),!0}catch(e){return!1}}new R("System.SByte"),new R("System.Byte"),new R("System.Int16"),new R("System.UInt16"),new R("System.Int32"),new R("System.UInt32"),new R("System.Single"),new R("System.Double"),new R("System.Decimal"),function(e){e[e.AllowHexSpecifier=512]="AllowHexSpecifier"}(V||(V={}));const Z=Symbol("numeric");function X(e){return"number"==typeof e||(null==e?void 0:e[Z])}function Q(e,n){return"number"==typeof e?e*n:e[Z]().multiply(n)}function ee(e,n){return"number"==typeof e?e.toFixed(n):e[Z]().toFixed(n)}function ne(e,n){return"number"==typeof e?e.toPrecision(n):e[Z]().toPrecision(n)}function te(e,n){return"number"==typeof e?e.toExponential(n):e[Z]().toExponential(n)}function re(e){return"number"==typeof e?(Number(e)>>>0).toString(16):e[Z]().toHex()}var oe=null;try{oe=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function ie(e,n,t){this.low=0|e,this.high=0|n,this.unsigned=!!t}function se(e){return!0===(e&&e.__isLong__)}ie.prototype.GetHashCode=function(){let e=this.unsigned?1:0;return e=(e<<5)+e^this.high,e=(e<<5)+e^this.low,e},ie.prototype.Equals=function(e){return Pe(this,e)},ie.prototype.CompareTo=function(e){return Me(this,e)},ie.prototype.toString=function(e){return Ae(this,e)},ie.prototype.toJSON=function(){return Ae(this)},ie.prototype[Z]=function(){const e=this;return{multiply:n=>Be(e,n),toPrecision:n=>String(e)+(0).toPrecision(n).substr(1),toExponential:n=>String(e)+(0).toExponential(n).substr(1),toFixed:n=>String(e)+(0).toFixed(n).substr(1),toHex:()=>{return Ae(e.unsigned?e:function(e,n,t){return t?function(e,n){return new ie(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)}(e,n):function(e,n){return new ie(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)}(e,n)}((n=e,t?function(e){var n=e.high,t=e.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&n,n>>>8&255,n>>>16&255,n>>>24]}(n):function(e){var n=e.high,t=e.low;return[n>>>24,n>>>16&255,n>>>8&255,255&n,t>>>24,t>>>16&255,t>>>8&255,255&t]}(n)),!0),16);var n,t}}},ie.prototype.__isLong__,Object.defineProperty(ie.prototype,"__isLong__",{value:!0});var ae={},le={};function ce(e,n){var t,r,o;return n?(o=0<=(e>>>=0)&&e<256)&&(r=le[e])?r:(t=ue(e,(0|e)<0?-1:0,!0),o&&(le[e]=t),t):(o=-128<=(e|=0)&&e<128)&&(r=ae[e])?r:(t=ue(e,e<0?-1:0,!1),o&&(ae[e]=t),t)}function de(e,n){if(isNaN(e))return n?xe:ye;if(n){if(e<0)return xe;if(e>=ge)return $e}else{if(e<=-be)return Ie;if(e+1>=be)return we}return e<0?He(de(-e,n)):ue(e%he|0,e/he|0,n)}function ue(e,n,t){return new ie(e,n,t)}var pe=Math.pow;function fe(e,n,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return ye;if("number"==typeof n?(t=n,n=!1):n=!!n,(t=t||10)<2||360)throw Error("interior hyphen");if(0===r)return He(fe(e.substring(1),n,t));for(var o=de(pe(t,8)),i=ye,s=0;s>>0:e.low}function Ce(e){return e.unsigned?(e.high>>>0)*he+(e.low>>>0):e.high*he+(e.low>>>0)}function Ae(e,n){if((n=n||10)<2||36>>0).toString(n);if(Le(s=l))return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}}function Le(e){return 0===e.high&&0===e.low}function Oe(e){return!e.unsigned&&e.high<0}function _e(e){return 1==(1&e.low)}function Pe(e,n){return se(n)||(n=me(n)),(e.unsigned===n.unsigned||e.high>>>31!=1||n.high>>>31!=1)&&e.high===n.high&&e.low===n.low}function Ne(e,n){return Me(e,n)<0}function Re(e,n){return Me(e,n)>0}function De(e,n){return Me(e,n)>=0}function Me(e,n){if(se(n)||(n=me(n)),Pe(e,n))return 0;var t=Oe(e),r=Oe(n);return t&&!r?-1:!t&&r?1:e.unsigned?n.high>>>0>e.high>>>0||n.high===e.high&&n.low>>>0>e.low>>>0?-1:1:Oe(Ue(e,n))?-1:1}function He(e){return!e.unsigned&&Pe(e,Ie)?Ie:Fe(function(e){return ue(~e.low,~e.high,e.unsigned)}(e),Te)}function Fe(e,n){se(n)||(n=me(n));var t=e.high>>>16,r=65535&e.high,o=e.low>>>16,i=65535&e.low,s=n.high>>>16,a=65535&n.high,l=n.low>>>16,c=0,d=0,u=0,p=0;return u+=(p+=i+(65535&n.low))>>>16,d+=(u+=o+l)>>>16,c+=(d+=r+a)>>>16,c+=t+s,ue((u&=65535)<<16|(p&=65535),(c&=65535)<<16|(d&=65535),e.unsigned)}function Ue(e,n){return se(n)||(n=me(n)),Fe(e,He(n))}function Be(e,n){if(Le(e))return e.unsigned?xe:ye;if(se(n)||(n=me(n)),oe)return ue(oe.mul(e.low,e.high,n.low,n.high),oe.get_high(),e.unsigned);if(Le(n))return e.unsigned?xe:ye;if(Pe(e,Ie))return _e(n)?Ie:ye;if(Pe(n,Ie))return _e(e)?Ie:ye;if(Oe(e))return Oe(n)?Be(He(e),He(n)):He(Be(He(e),n));if(Oe(n))return He(Be(e,He(n)));if(Ne(e,ve)&&Ne(n,ve))return de(Ce(e)*Ce(n),e.unsigned);var t=e.high>>>16,r=65535&e.high,o=e.low>>>16,i=65535&e.low,s=n.high>>>16,a=65535&n.high,l=n.low>>>16,c=65535&n.low,d=0,u=0,p=0,f=0;return p+=(f+=i*c)>>>16,u+=(p+=o*c)>>>16,p&=65535,u+=(p+=i*l)>>>16,d+=(u+=r*c)>>>16,u&=65535,d+=(u+=o*l)>>>16,u&=65535,d+=(u+=i*a)>>>16,d+=t*c+r*l+o*a+i*s,ue((p&=65535)<<16|(f&=65535),(d&=65535)<<16|(u&=65535),e.unsigned)}function je(e,n){if(se(n)||(n=me(n)),Le(n))throw Error("division by zero");var t,r,o;if(oe)return e.unsigned||-2147483648!==e.high||-1!==n.low||-1!==n.high?ue((e.unsigned?oe.div_u:oe.div_s)(e.low,e.high,n.low,n.high),oe.get_high(),e.unsigned):e;if(Le(e))return e.unsigned?xe:ye;if(e.unsigned){if(n.unsigned||(n=function(e){return e.unsigned?e:ue(e.low,e.high,!0)}(n)),Re(n,e))return xe;if(Re(n,function(e,n){if(se(n)&&(n=ke(n)),0==(n&=63))return e;var t=e.high;return n<32?ue(e.low>>>n|t<<32-n,t>>>n,e.unsigned):ue(32===n?t:t>>>n-32,0,e.unsigned)}(e,1)))return Se;o=xe}else{if(Pe(e,Ie))return Pe(n,Te)||Pe(n,Ee)?Ie:Pe(n,Ie)?Te:Pe(t=function(e,n){return se(n)&&(n=ke(n)),0==(n&=63)?e:n<32?ue(e.low<>>32-n,e.unsigned):ue(0,e.low<>>n|e.high<<32-n,e.high>>n,e.unsigned):ue(e.high>>n-32,e.high>=0?0:-1,e.unsigned)}(e,1),n),1),ye)?Oe(n)?Te:Ee:o=Fe(t,je(r=Ue(e,Be(n,t)),n));if(Pe(n,Ie))return e.unsigned?xe:ye;if(Oe(e))return Oe(n)?je(He(e),He(n)):He(je(He(e),n));if(Oe(n))return He(je(e,He(n)));o=ye}for(r=e;De(r,n);){t=Math.max(1,Math.floor(Ce(r)/Ce(n)));for(var i=Math.ceil(Math.log(t)/Math.LN2),s=i<=48?1:pe(2,i-48),a=de(t),l=Be(a,n);Oe(l)||Re(l,r);)l=Be(a=de(t-=s,e.unsigned),n);Le(a)&&(a=Te),o=Fe(o,a),r=Ue(r,l)}return o}const Ge=Fe,We=Be,qe=je,ze=He,Ke=function(e,n){return se(n)||(n=me(n)),ue(e.low&n.low,e.high&n.high,e.unsigned)},Ve=Me,Je=ue,Ye=ke;function Ze(e,n,t){let r=e,o=0;switch(t){case 0:r=e<<24>>24,o=r;break;case 4:r=e<<24>>>24;break;case 1:r=e<<16>>16,o=r;break;case 5:r=e<<16>>>16;break;case 2:r=e>>0,o=r;break;case 6:r=e>>>0}return ue(r,o>>31,n)}function Xe(e){const n=e<0,t=(e=Math.abs(e))%36e5/6e4;return(n?"-":"+")+d(~~(e/36e5),2)+":"+d(t,2)}function Qe(e,n){const t=e.toISOString();return"first"===n?t.substring(0,t.indexOf("T")):t.substring(t.indexOf("T")+1,t.length-1)}function en(e,n,t){return n.replace(/(\w)\1*/g,(n=>{let r=Number.NaN;switch(n.substring(0,1)){case"y":const o=t?e.getUTCFullYear():e.getFullYear();r=n.length<4?o%100:o;break;case"M":r=(t?e.getUTCMonth():e.getMonth())+1;break;case"d":r=t?e.getUTCDate():e.getDate();break;case"H":r=t?e.getUTCHours():e.getHours();break;case"h":const i=t?e.getUTCHours():e.getHours();r=i>12?i%12:i;break;case"m":r=t?e.getUTCMinutes():e.getMinutes();break;case"s":r=t?e.getUTCSeconds():e.getSeconds();break;case"f":r=t?e.getUTCMilliseconds():e.getMilliseconds()}return Number.isNaN(r)?n:r<10&&n.length>1?"0"+r:""+r}))}function nn(e,n,t){return null!=e.offset?function(e,n){var t,r,o;const i=new Date(e.getTime()+(null!==(t=e.offset)&&void 0!==t?t:0));if("string"!=typeof n)return i.toISOString().replace(/\.\d+/,"").replace(/[A-Z]|\.\d+/g," ")+Xe(null!==(r=e.offset)&&void 0!==r?r:0);if(1!==n.length)return en(i,n,!0);switch(n){case"D":case"d":return Qe(i,"first");case"T":case"t":return Qe(i,"second");case"O":case"o":return function(e,n){const t=e.toISOString();return t.substring(0,t.length-1)+Xe(n)}(i,null!==(o=e.offset)&&void 0!==o?o:0);default:throw new Error("Unrecognized Date print format")}}(e,n):function(e,n){const t=1===e.kind;if("string"!=typeof n)return t?e.toUTCString():e.toLocaleString();if(1!==n.length)return en(e,n,t);switch(n){case"D":case"d":return t?Qe(e,"first"):e.toLocaleDateString();case"T":case"t":return t?Qe(e,"second"):e.toLocaleTimeString();case"O":case"o":return function(e,n){if(n)return e.toISOString();{const n=null==e.kind||2===e.kind;return d(e.getFullYear(),4)+"-"+d(e.getMonth()+1,2)+"-"+d(e.getDate(),2)+"T"+d(e.getHours(),2)+":"+d(e.getMinutes(),2)+":"+d(e.getSeconds(),2)+"."+d(e.getMilliseconds(),3)+(n?Xe(-6e4*e.getTimezoneOffset()):"")}}(e,t);default:throw new Error("Unrecognized Date print format")}}(e,n)}function tn(e,n=0){if(0!=(-276&n))throw new Error("RegexOptions only supports: IgnoreCase, Multiline, Singleline and ECMAScript");let t="g";return t+=1&n?"i":"",t+=2&n?"m":"",t+=16&n?"s":"",new RegExp(e,t)}function rn(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function on(e,n,t=0){let r;return r=e instanceof RegExp?(r=e,e=n,r.lastIndex=t,r):r=tn(n,t),r.exec(e)}function sn(e,n,t=0){let r;if(r=e instanceof RegExp?(r=e,e=n,r.lastIndex=t,r):r=tn(n,t),!r.global)throw new Error("Non-global RegExp");let o=r.exec(e);const i=[];for(;null!==o;)i.push(o),o=r.exec(e);return i}const an=/(^|[^%])%([0+\- ]*)(\*|\d+)?(?:\.(\d+))?(\w)/g,ln=/\{(\d+)(,-?\d+)?(?:\:([a-zA-Z])(\d{0,2})|\:(.+?))?\}/g;function cn(e,n){return function(e,n){return"number"==typeof e?en?1:0:e.CompareTo(n)}(e,n)<0}function dn(e,n,t){function r(e){return!0===e||1===e||3===e||5===e}return null==e?null==n?0:-1:null==n?1:4===(o=t)||5===o?(r(t)&&(e=e.toLowerCase(),n=n.toLowerCase()),e===n?0:e0?t[0]:0;if(r<0)throw new Error("Start index cannot be negative");const o=t.length>1?t[1]:e.length-r;if(o<0)throw new Error("Length cannot be negative");if(o>e.length-r)throw new Error("Invalid startIndex and length");e=e.substr(r,o);for(const t of n){const n=e.indexOf(t);if(n>-1)return n+r}return-1}function pn(e){return{input:e,cont:(n=e,e=>{an.lastIndex=0;const t=[],r=[];let o=0,i=an.exec(n);for(;i;){const e=i.index+(i[1]||"").length;t.push(n.substring(o,e).replace(/%%/g,"%")),r.push(i),o=an.lastIndex,an.lastIndex-=1,i=an.exec(n)}return 0===t.length?e(n.replace(/%%/g,"%")):(t.push(n.substring(o).replace(/%%/g,"%")),vn(e,t,r))})};var n}function fn(e,n){return"string"==typeof n?e(n):n.cont(e)}function mn(e){return fn((e=>console.log(e)),e)}function hn(e){return fn((e=>e),e)}function gn(e){return fn((e=>{throw new Error(e)}),e)}function bn(e,n,t,r,o){let i="";if(n=n||"",o=o||"",X(e))switch("x"!==o.toLowerCase()&&(cn(e,0)?(e=Q(e,-1),i="-"):n.indexOf(" ")>=0?i=" ":n.indexOf("+")>=0&&(i="+")),r=null==r?null:parseInt(r,10),o){case"f":case"F":e=ee(e,r=null!=r?r:6);break;case"g":case"G":e=null!=r?ne(e,r):ne(e);break;case"e":case"E":e=null!=r?te(e,r):te(e);break;case"x":e=re(e);break;case"X":e=re(e).toUpperCase();break;default:e=String(e)}else e=e instanceof Date?nn(e):L(e);if(t="number"==typeof t?t:parseInt(t,10),isNaN(t))e=i+e;else{const r=n.indexOf("0")>=0,o=n.indexOf("-")>=0,s=o||!r?" ":"0";e="0"===s?i+(e=wn(e,t-i.length,s,o)):wn(i+e,t,s,o)}return e}function vn(e,n,t,r="",o=-1){return(...i)=>{let s=r;const a=n.slice(),l=t.slice();for(const e of i){const[,,n,t,r,i]=l[0];let c=t;if(o>=0)c=o,o=-1;else if("*"===c){if(e<0)throw new Error("Non-negative number required");o=e;continue}s+=a[0],s+=bn(e,n,c,r,i),a.splice(0,1),l.splice(0,1)}return 0===l.length?(s+=a[0],e(s)):vn(e,a,l,s,o)}}function yn(e,...n){return"object"==typeof e&&n.length>0&&(e=n[0],n.shift()),e.replace(ln,((e,t,r,o,i,s)=>{let a=n[t];if(X(a))switch(i=null==i?null:parseInt(i,10),o){case"f":case"F":a=ee(a,i=null!=i?i:2);break;case"g":case"G":a=null!=i?ne(a,i):ne(a);break;case"e":case"E":a=null!=i?te(a,i):te(a);break;case"p":case"P":i=null!=i?i:2,a=ee(Q(a,100),i)+" %";break;case"d":case"D":a=null!=i?wn(String(a),i,"0"):String(a);break;case"x":case"X":a=null!=i?wn(re(a),i,"0"):re(a),"X"===o&&(a=a.toUpperCase());break;default:if(s){let e="";a=s.replace(/(0+)(\.0+)?/,((n,t,r)=>(cn(a,0)&&(a=Q(a,-1),e="-"),a=ee(a,null!=r?r.length-1:0),wn(a,(t||"").length-e.length+(null!=r?r.length:0),"0")))),a=e+a}}else a=a instanceof Date?nn(a,s||o):L(a);return r=parseInt((r||" ").substring(1),10),isNaN(r)||(a=wn(String(a),Math.abs(r)," ",r<0)),a}))}function xn(e,n){const t=e.lastIndexOf(n);return t>=0&&t===e.length-n.length}function Tn(e){return"string"!=typeof e||0===e.length}function Sn(e){return"string"!=typeof e||/^\s*$/.test(e)}function En(e,n){return Array.isArray(n)?n.join(e):Array.from(n).join(e)}function wn(e,n,t,r){t=t||" ",n-=e.length;for(let o=0;oe.length)throw new Error("Invalid startIndex and/or length");return null!=t?e.substr(n,t):e.substr(n)}class An{constructor(e){this.value=e}toJSON(){return this.value}toString(){return String(this.value)}GetHashCode(){return b(this.value)}Equals(e){return null!=e&&T(this.value,e instanceof An?e.value:e)}CompareTo(e){return null==e?1:$(this.value,e instanceof An?e.value:e)}}function Ln(e){return null==e||e instanceof An?new An(e):e}function On(e){if(null==e)throw new Error("Option has no value");return e instanceof An?e.value:e}function _n(e,n){return null!=e?On(e):n}function Pn(e,n){return null!=n?Ln(e(On(n))):void 0}function Nn(e,n){return null!=n?e(On(n)):void 0}function Rn(e,n){return"function"==typeof e?new e(n):new Array(n)}function Dn(e,n,t,r){const o=0|n;return e.fill(r,o,o+t)}function Mn(e,n,t){if(e<0)throw new Error("The input must be non-negative\\nParameter name: count");const r=Rn(t,e);for(let t=0;t<=e-1;t++)r[t]=n(t);return r}function Hn(e,n){n.push(e)}function Fn(e,n){const t=a(e);try{for(;t["System.Collections.IEnumerator.MoveNext"]();)Hn(t["System.Collections.Generic.IEnumerator`1.get_Current"](),n)}finally{t.Dispose()}}const Un="The index was outside the range of elements in the list.",Bn="The input must be non-negative.",jn="The input sequence has an insufficient number of elements.";class Gn extends _{constructor(e,n){super(),this.head=e,this.tail=n}toString(){return"["+En("; ",this)+"]"}Equals(e){return this===e||((e,n)=>{e:for(;;){const t=e,r=n,o=[t.tail,r.tail];if(null!=o[0]){if(null!=o[1]){const i=o[0],s=o[1];if(T(t.head,r.head)){e=i,n=s;continue e}return!1}return!1}return null==o[1]}})(this,e)}GetHashCode(){return 0|((e,n,t)=>{for(;;){const r=e,o=n,i=t,s=i.tail;if(null==s)return 0|o;{const a=s;if(r>18)return 0|o;e=r+1,n=(o<<1)+b(i.head)+631*r,t=a}}})(0,0,this)}CompareTo(e){return 0|((e,n)=>{e:for(;;){const t=e,r=n,o=[t.tail,r.tail];if(null!=o[0]){if(null!=o[1]){const i=o[0],s=o[1],a=0|$(t.head,r.head);if(0===a){e=i,n=s;continue e}return 0|a}return 1}return null!=o[1]?-1:0}})(this,e)}GetEnumerator(){return new Wn(this)}[Symbol.iterator](){return l(this.GetEnumerator())}"System.Collections.IEnumerable.GetEnumerator"(){return a(this)}}class Wn{constructor(e){this.xs=e,this.it=this.xs,this.current=null}"System.Collections.Generic.IEnumerator`1.get_Current"(){return this.current}"System.Collections.IEnumerator.get_Current"(){return this.current}"System.Collections.IEnumerator.MoveNext"(){const e=this,n=e.it.tail;if(null!=n){const t=n;return e.current=e.it.head,e.it=t,!0}return!1}"System.Collections.IEnumerator.Reset"(){const e=this;e.it=e.xs,e.current=null}Dispose(){}}function qn(){return new Gn(null,void 0)}function zn(e,n){return new Gn(e,n)}function Kn(e){return null==e.tail}function Vn(e){return 0|((e,n)=>{for(;;){const t=e,r=n.tail;if(null==r)return 0|t;e=t+1,n=r}})(0,e)}function Jn(e){if(null!=e.tail)return e.head;throw new Error("List was empty\\nParameter name: list")}function Yn(e){const n=e.tail;if(null!=n)return n;throw new Error("List was empty\\nParameter name: list")}function Zn(){return qn()}function Xn(e,n){return zn(e,n)}function Qn(e){return zn(e,qn())}function et(e){return Kn(e)}function nt(e){return Vn(e)}function tt(e){return Jn(e)}function rt(e){return Yn(e)}function ot(e){const n=0|Vn(e),t=Dn(new Array(n),0,n,null);return((e,n)=>{for(;;){const r=e,o=n;if(Kn(o))break;t[r]=Jn(o),e=r+1,n=Yn(o)}})(0,e),t}function it(e,n,t){let r=n,o=t;for(;!Kn(o);)r=e(r,Jn(o)),o=Yn(o);return r}function st(e){return it(((e,n)=>zn(n,e)),qn(),e)}function at(e,n){return it(((n,t)=>{e(t)}),void 0,n)}function lt(e,n){it(((n,t)=>(e(n,t),n+1|0)),0,n)}function ct(e,n){let t=n;for(let n=e.length-1;n>=0;n--)t=zn(e[n],t);return t}function dt(e){return ct(e,qn())}function ut(e){let n,t;if(r(e))return dt(e);if(e instanceof Gn)return e;{const r=qn();let o=r;const i=a(e);try{for(;i["System.Collections.IEnumerator.MoveNext"]();){const e=i["System.Collections.Generic.IEnumerator`1.get_Current"]();n=o,t=new Gn(e,void 0),n.tail=t,o=t}}finally{i.Dispose()}const s=o,l=qn();return s.tail=l,Yn(r)}}function pt(e){const n=qn();let t=n;const o=e=>{t=it(((e,n)=>{const t=new Gn(n,void 0);return e.tail=t,t}),t,e)};if(r(e))e.forEach(o);else if(e instanceof Gn)at(o,e);else{const n=a(e);try{for(;n["System.Collections.IEnumerator.MoveNext"]();)o(n["System.Collections.Generic.IEnumerator`1.get_Current"]())}finally{n.Dispose()}}const i=t,s=qn();return i.tail=s,Yn(n)}function ft(e,n){return it(((e,n)=>zn(n,e)),n,st(e))}function mt(e,n){let t,r;const o=qn();let i=o,s=n;for(;!Kn(s);){let n=e(Jn(s));for(;!Kn(n);)t=i,r=new Gn(Jn(n),void 0),t.tail=r,i=r,n=Yn(n);s=Yn(s)}const a=i,l=qn();return a.tail=l,Yn(o)}function ht(e,n){const t=qn(),r=function(e,n,t){return((n,t,r)=>{for(;;){const o=n,i=t,s=r;if(Kn(s))return i;n=o+1,t=e(o,i,Jn(s)),r=Yn(s)}})(0,n,t)}(((n,t,r)=>{const o=new Gn(e(n,r),void 0);return t.tail=o,o}),t,n),o=qn();return r.tail=o,Yn(t)}function gt(e,n){const t=qn(),r=it(((n,t)=>{const r=new Gn(e(t),void 0);return n.tail=r,r}),t,n),o=qn();return r.tail=o,Yn(t)}function bt(e,n){return(n=>{e:for(;;){const t=n;if(Kn(t))return;{const r=e(Jn(t));if(null==r){n=Yn(t);continue e}return r}}})(n)}function vt(e,n){return bt((n=>e(n)?Ln(n):void 0),n)}function yt(e,n){return((n,t)=>{for(;;){const r=n,o=t;if(Kn(o))return;if(e(Jn(o)))return r;n=r+1,t=Yn(o)}})(0,n)}function xt(e,n){return function(e,n){return((e,t)=>{for(;;){const r=e,o=t,i=o.tail;if(null==i)throw new Error(Un+"\\nParameter name: index");if(r===n)return o.head;e=r+1,t=i}})(0,e)}(n,e)}function Tt(e,n){const t=qn(),r=it(((n,t)=>{if(e(t)){const e=new Gn(t,void 0);return n.tail=e,e}return n}),t,n),o=qn();return r.tail=o,Yn(t)}function St(e,n){const t=qn(),r=it(((n,t)=>{const r=e(t);if(null==r)return n;{const e=new Gn(On(r),void 0);return n.tail=e,e}}),t,n),o=qn();return r.tail=o,Yn(t)}function Et(e,n,t){return null!=yt((n=>t.Equals(e,n)),n)}function wt(e,n){return it(((n,t)=>!!n&&e(t)),!0,n)}function $t(e,n){return null!=yt(e,n)}function It(e,n){for(;;){const t=e,r=n;if(t<=0)return r;if(Kn(r))throw new Error(jn+"\\nParameter name: list");e=t-1,n=Yn(r)}}function kt(e,n){if(e<0)throw new Error(Bn+"\\nParameter name: count");const t=qn(),r=((e,n,t)=>{let r;for(;;){const o=e,i=n,s=t;if(o<=0)return i;if(Kn(s))throw new Error(jn+"\\nParameter name: list");e=o-1,r=new Gn(Jn(s),void 0),i.tail=r,n=r,t=Yn(s)}})(e,t,n),o=qn();return r.tail=o,Yn(t)}function Ct(e,n,t){const r=0|nt(t),o=0|_n(e,0),i=0|_n(n,r-1);if(o<0)throw new Error(Un+"\\nParameter name: startIndex");if(i>=r)throw new Error(Un+"\\nParameter name: endIndex");return i[[],[],[]]))}class Ot extends _{constructor(e,n,t,r,o,i,s,a,l,c){super(),this.Attributes=e,this.Comments=n,this.IsStatic=t,this.IsClass=r,this.Name=o,this.FullName=i,this.TypeParameters=s,this.Inherits=a,this.Members=l,this.Accessibility=c}}function _t(){return F("ts2fable.Syntax.FsInterface",[],Ot,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["IsStatic",W],["IsClass",W],["Name",G],["FullName",G],["TypeParameters",j(Cr())],["Inherits",j(Cr())],["Members",j(Cr())],["Accessibility",B(Lt())]]))}class Pt extends _{constructor(e){super(),this.Members=e}}function Nt(){return F("ts2fable.Syntax.FsTypeLiteral",[],Pt,(()=>[["Members",j(Cr())]]))}class Rt extends _{constructor(e,n,t){super(),this.Name=e,this.Constraint=n,this.Default=t}}function Dt(){return F("ts2fable.Syntax.FsGenericTypeParameter",[],Rt,(()=>[["Name",G],["Constraint",B(Cr())],["Default",B(Cr())]]))}class Mt extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Numeric","String","Unknown"]}}class Ht extends _{constructor(e,n,t,r,o){super(),this.Attributes=e,this.Comments=n,this.Name=t,this.Type=r,this.Value=o}}class Ft extends _{constructor(e,n,t,r){super(),this.Attributes=e,this.Comments=n,this.Name=t,this.Cases=r}}function Ut(){return F("ts2fable.Syntax.FsEnum",[],Ft,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["Name",G],["Cases",j(F("ts2fable.Syntax.FsEnumCase",[],Ht,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["Name",G],["Type",U("ts2fable.Syntax.FsEnumCaseType",[],Mt,(()=>[[],[],[]]))],["Value",B(G)]])))]]))}class Bt extends _{constructor(e,n){super(),this.Name=e,this.Content=n}}function jt(){return F("ts2fable.Syntax.FsCommentTag",[],Bt,(()=>[["Name",G],["Content",j(G)]]))}class Gt extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["HRef","CRef"]}}class Wt extends _{constructor(e,n,t){super(),this.Type=e,this.Target=n,this.Content=t}}class qt extends _{constructor(e,n){super(),this.Type=e,this.Content=n}}class zt extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Summary","Param","TypeParam","Returns","Remarks","SeeAlso","Example","Exception","Version","Default","Tag","UnknownTag","Unknown"]}}function Kt(){return U("ts2fable.Syntax.FsComment",[],zt,(()=>[[["Item",j(G)]],[["Item",jt()]],[["Item",jt()]],[["Item",j(G)]],[["Item",j(G)]],[["Item",F("ts2fable.Syntax.FsCommentLink",[],Wt,(()=>[["Type",U("ts2fable.Syntax.FsCommentLinkType",[],Gt,(()=>[[],[]]))],["Target",G],["Content",j(G)]]))]],[["Item",j(G)]],[["Item",F("ts2fable.Syntax.FsCommentException",[],qt,(()=>[["Type",B(G)],["Content",j(G)]]))]],[["Item",j(G)]],[["Item",j(G)]],[["Item",jt()]],[["Item",jt()]],[["Item",j(G)]]]))}class Vt extends _{constructor(e,n,t,r){super(),this.Name=e,this.Optional=n,this.ParamArray=t,this.Type=r}}function Jt(){return F("ts2fable.Syntax.FsParam",[],Vt,(()=>[["Name",G],["Optional",W],["ParamArray",W],["Type",Cr()]]))}class Yt extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Regular","Constructor","Call","StringParam"]}}class Zt extends _{constructor(e,n,t,r,o,i,s,a,l){super(),this.Attributes=e,this.Comments=n,this.Kind=t,this.IsStatic=r,this.Name=o,this.TypeParameters=i,this.Params=s,this.ReturnType=a,this.Accessibility=l}}function Xt(){return F("ts2fable.Syntax.FsFunction",[],Zt,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["Kind",U("ts2fable.Syntax.FsFunctionKind",[],Yt,(()=>[[],[],[],[["Item",G]]]))],["IsStatic",W],["Name",B(G)],["TypeParameters",j(Cr())],["Params",j(Jt())],["ReturnType",Cr()],["Accessibility",B(Lt())]]))}class Qt extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Regular","Index"]}}class er extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["ReadOnly","WriteOnly","ReadWrite"]}}class nr extends _{constructor(e,n,t,r,o,i,s,a,l,c){super(),this.Attributes=e,this.Comments=n,this.Kind=t,this.Index=r,this.Name=o,this.Option=i,this.Type=s,this.Accessor=a,this.IsStatic=l,this.Accessibility=c}}function tr(){return F("ts2fable.Syntax.FsProperty",[],nr,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["Kind",U("ts2fable.Syntax.FsPropertyKind",[],Qt,(()=>[[],[]]))],["Index",B(Jt())],["Name",G],["Option",W],["Type",Cr()],["Accessor",U("ts2fable.Syntax.FsAccessor",[],er,(()=>[[],[],[]]))],["IsStatic",W],["Accessibility",B(Lt())]]))}class rr extends _{constructor(e,n){super(),this.Type=e,this.TypeParameters=n}}function or(){return F("ts2fable.Syntax.FsGenericType",[],rr,(()=>[["Type",Cr()],["TypeParameters",j(Cr())]]))}class ir extends _{constructor(e,n){super(),this.Option=e,this.Types=n}}function sr(){return F("ts2fable.Syntax.FsUnion",[],ir,(()=>[["Option",W],["Types",j(Cr())]]))}class ar extends _{constructor(e,n,t,r,o){super(),this.Attributes=e,this.Comments=n,this.Name=t,this.Type=r,this.TypeParameters=o}}function lr(){return F("ts2fable.Syntax.FsAlias",[],ar,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["Name",G],["Type",Cr()],["TypeParameters",j(Cr())]]))}class cr extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Intersection","Tuple","Mapped"]}}class dr extends _{constructor(e,n){super(),this.Types=e,this.Kind=n}}function ur(){return F("ts2fable.Syntax.FsTuple",[],dr,(()=>[["Types",j(Cr())],["Kind",U("ts2fable.Syntax.FsTupleKind",[],cr,(()=>[[],[],[]]))]]))}class pr extends _{constructor(e,n){super(),this.PropertyName=e,this.Name=n}}class fr extends _{constructor(e,n,t){super(),this.ImportSpecifier=e,this.SpecifiedModule=n,this.ResolvedModule=t}}class mr extends _{constructor(e,n,t){super(),this.Module=e,this.SpecifiedModule=n,this.ResolvedModule=t}}class hr extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Type","Module"]}}function gr(){return U("ts2fable.Syntax.FsImport",[],hr,(()=>[[["Item",F("ts2fable.Syntax.FsTypeImport",[],fr,(()=>[["ImportSpecifier",F("ts2fable.Syntax.FsImportSpecifier",[],pr,(()=>[["PropertyName",B(G)],["Name",G]]))],["SpecifiedModule",G],["ResolvedModule",B(G)]]))]],[["Item",F("ts2fable.Syntax.ModuleImport",[],mr,(()=>[["Module",G],["SpecifiedModule",G],["ResolvedModule",B(G)]]))]]]))}class br extends _{constructor(e,n,t){super(),this.IsGlobal=e,this.Selector=n,this.Path=t}}class vr extends _{constructor(e,n,t,r,o,i,s,a,l){super(),this.Attributes=e,this.Comments=n,this.Export=t,this.HasDeclare=r,this.Name=o,this.Type=i,this.IsConst=s,this.IsStatic=a,this.Accessibility=l}Equals(e){return e instanceof vr&&this.Name===e.Name}GetHashCode(){return 0|m(this.Name)}CompareTo(e){if(e instanceof vr)return 0|E(this.Name,e.Name);throw new Error("cannot compare values of different types\\nParameter name: y")}}function yr(){return F("ts2fable.Syntax.FsVariable",[],vr,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["Export",B(F("ts2fable.Syntax.FsExport",[],br,(()=>[["IsGlobal",W],["Selector",G],["Path",G]])))],["HasDeclare",W],["Name",G],["Type",Cr()],["IsConst",W],["IsStatic",W],["Accessibility",B(Lt())]]))}class xr extends _{constructor(e){super(),this.Type=e}}function Tr(){return F("ts2fable.Syntax.FsKeyOf",[],xr,(()=>[["Type",Cr()]]))}class Sr extends _{constructor(e,n){super(),this.Name=e,this.FullName=n}}function Er(){return F("ts2fable.Syntax.FsMapped",[],Sr,(()=>[["Name",G],["FullName",G]]))}class wr extends _{constructor(e,n){super(),this.Name=e,this.Value=n}}class $r extends _{constructor(e,n,t){super(),this.Namespace=e,this.Name=n,this.Arguments=t}}function Ir(){return F("ts2fable.Syntax.FsAttribute",[],$r,(()=>[["Namespace",B(G)],["Name",G],["Arguments",j(F("ts2fable.Syntax.FsArgument",[],wr,(()=>[["Name",B(G)],["Value",G]])))]]))}class kr extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Interface","Enum","Property","Param","Array","TODO","None","Mapped","Function","Union","Alias","Generic","Tuple","Module","File","FileOut","Variable","StringLiteral","ExportAssignment","This","Import","TypeLiteral","GenericTypeParameter","KeyOf"]}}function Cr(){return U("ts2fable.Syntax.FsType",[],kr,(()=>[[["Item",_t()]],[["Item",Ut()]],[["Item",tr()]],[["Item",Jt()]],[["Item",Cr()]],[],[],[["Item",Er()]],[["Item",Xt()]],[["Item",sr()]],[["Item",lr()]],[["Item",or()]],[["Item",ur()]],[["Item",Lr()]],[["Item",Pr()]],[["Item",Rr()]],[["Item",yr()]],[["Item",G]],[["Item",G]],[],[["Item",gr()]],[["Item",Nt()]],[["Item",Dt()]],[["Item",Tr()]]]))}class Ar extends _{constructor(e,n,t,r,o,i,s){super(),this.Comments=e,this.HasDeclare=n,this.IsNamespace=t,this.Name=r,this.Types=o,this.HelperLines=i,this.Attributes=s}}function Lr(){return F("ts2fable.Syntax.FsModule",[],Ar,(()=>[["Comments",j(Kt())],["HasDeclare",W],["IsNamespace",W],["Name",G],["Types",j(Cr())],["HelperLines",j(G)],["Attributes",j(j(Ir()))]]))}class Or extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Index","Extra"]}}class _r extends _{constructor(e,n,t,r){super(),this.Kind=e,this.FileName=n,this.ModuleName=t,this.Modules=r}}function Pr(){return F("ts2fable.Syntax.FsFile",[],_r,(()=>[["Kind",U("ts2fable.Syntax.FsFileKind",[],Or,(()=>[[],[["Item",G]]]))],["FileName",G],["ModuleName",G],["Modules",j(Lr())]]))}class Nr extends _{constructor(e,n,t,r){super(),this.Namespace=e,this.Opens=n,this.Files=t,this.AbbrevTypes=r}}function Rr(){return F("ts2fable.Syntax.FsFileOut",[],Nr,(()=>[["Namespace",G],["Opens",j(G)],["Files",j(Pr())],["AbbrevTypes",j(G)]]))}function Dr(e){return Tt((e=>Kr(e)),e.Members)}function Mr(e){return $t((e=>Vr(e)),e.Members)}function Hr(e){return $t((e=>T(e.Type,new Mt(2))),e.Cases)?new Mt(2):$t((e=>T(e.Type,new Mt(1))),e.Cases)?new Mt(1):new Mt(0)}function Fr(e){return 0===e.tag}function Ur(e){let n,t;switch(et(e)?n=1:0===tt(e).tag&&et(rt(e))?(n=0,t=tt(e).fields[0]):n=1,n){case 0:return t;case 1:return}}function Br(e){return $t((n=>e.indexOf(n)>=0),dt(["","","","5'/1(*$$$4“$$$$$$$$%$&$$'%$$&$$$%$4$,F$%&&$$$$$$$$$$$$$$$$$$$$$$$($$$$$%%VS$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$(%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%$$$$$$$$$$$$%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$I%$)L$$%%$$P$$$%$%$$+>''%.)&%$%%.$$$%C$-8-'%$†$$*$$)%%$'%-&%$1$$$$A>%|.$1-D,%$&$%$%9'$,$&$(%2$<&%$$.X8$5.2$C$Y$$$$&+'$%$*-%%-$$2$%$+%%%9$*$$&'%$$&'%%%%$$+$'%$&%%-%%)$$$$$%%$$)'%%9$*$%$%$%%$$&%'%%&&$*'$$*-%&$$-%$$,$&$9$*$%$(%$$&($%$$%$%$2%%%-$$*$)$$%$+%%%9$*$%$(%$$$$$'%%%%$*%$'%$&%%-$$)-$$$)&&$'&%$$$%&%&&&/'%$%&&$&$%$)$1-&)$$($&$+$&$:$3&$&'$&$'*%$&(%%%-*$*$$$%$+$&$:$-$(%$$$$($$%$%%*%*$$%%%-$%0%%,$&$L%$&'$&$&$$$'&$*&%%-,$)$$%$5&;$,$$%*&$'&&$$$+)-%%$/S$%*'$)$+$-%H%$$$($;$$$-$%,$%($$$)%-%'C$&2$$&%)--$$$$$$$$$$%+$G'1$($%(.$G$+$)$%('%HN%'$)$%%%$-))%%'&$&%*&'0$%%)$$$-&$%I$$($%N$$&Ŭ$'%*$$$'%L$'%D$'%*$$$'%2$\\$'%f%&,7&3-)y%)%$ʏ$$4$=$$&n&&+*0$'&.5&%,5%/0$&$%/W%$*+$%.&$&$$$%-)-))$'&$$-)F$X*(%E$$(i-B$&'%&'%$)&'$&%-A%(.O'=)-$&E:%%$%%X$$$*$$$$%+)-%$-)-)*$)%1$%b'$R$$($$($%*'-*-,,&%$A$'%%$&%-O$$%&$$&%+'G++%%&(-&&-A)%,*N%&++&$0$*'$)$%$%$(Ob0$EH]$($$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$,$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$,+)%)%++++)%)%+$$$$$$$$++1%++++++($%'$$$&&$%'$&'%%'$&+(&%&$%'$%$.()%$$$%$$$+$$($,$$'%&$$$.$$$-$($-$$%)&$$$-&$$$0&C30'$&/2%$'$%$&%&$$$%$()$$$$$$'$$'$'$%%%($'$$%$$3F$$'$%'((%'$%$%$*$B%%$$$Bį+$$$$7%*$$t$A'C',7$+$(I((A$$G'+$(MKKq%-)G'G'K+W.$³Ś,9-+»)%$$O$%&$%:$$+:%*B+,S6$%((9)&$=($c['%%3%Q$&$%(''$&$@%&'$,*,*@%$@&C+$?%'(*,Y&*9%+6(+5*'/*slZV0V*)G'+-ʼnB$M$%$%%q@-$+9.'(y8*7:,$$$X2*'7-2&$P&'%%%$'.$%<*-)&G($+$-'$%$+F$%$,%$S&,%'''$$$-$$$&$7.5$<&&%$$%)$d*$$$'$2$-$)R$&+(-)%%$+%%%9$*$%$($%$%$'%%%&%$)$((%%*&(®X&+%&$$'(-%$$$&AS&)$$'%$%%$$+-ÉR&'%'%$%:'%ES&+%$$%&$.-)06N$$$%)$$$*-Y>%&%'$('-%&$ãO&,$%$‡CC-,/+%$%+$%$;)$%%%$$$$$$$&,-i+%J&'%%'$$$$$>$-K)$$'+$+$)%&Q0$%&$(@\\Ī,$H$*$)$$$(--6&%A%9$$*$%$%l*$%$I)&$$%$*$$+-))$%$C($%$%$$$$*-ř6%%%Ú$28+'40$ν‰’$(.ç૟ђ$,࿪ɪ⇜ɜ*B$-'%ƒA%($-S*(''$$--$*$8(6˓CC:'ˆn'$$Z*'0c%$$$.%1᠛+ӹM,⌚łT&4'+ƯधŽ(0&,*-%$%$'፿ę-J%_%&&)++%*A'^:e&$½7/z,<ª===*$5==$$%%$%%%'$+'$$$*$.==%$'%+$*$=%$'$($$&*$============?%<$<$)<$<$)<$<$)<$<$)<$<$)$$%UȣZ'U+$1$%(2($2ճ*$4%*$%$(øP&**%-'$$ƓO'-($ԣè%,*LEE*$'-'%̴^$&$'oP$2å'$>$%$$%$$-$'$$$$)$'$$$$$$&$%$$%$$$$$$$$$$%$$%'$*$'$'$$$-$4(&$($4W%ıO'‡/2%2$2$H-0Ä[@0O',*%1)½Ğ(˻+0&0&—/|*/7/'[+-)K+A%%qœ$u$ª/1%(&&(*,<**,&0*L¶$ZH-Щ꜁Eၘ.ā%ᚥ1ᵔూɁ؅፮򮳙$Aƒ£ē︳𐀡%𐀡"].map((e=>{var n;return(null!==(n=e.codePointAt(0))&&void 0!==n?n:0)-35})),n=[..."1.;=;78;<;6;+;<;#7;8>5>$7<8<1.;=?;>?'9<2?>?<->$;>-':-;#<#$<$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$'#$'#%$#%$#%$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#%$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$'$&>&>&>&>&>(#$#$&>#$@&$;#@>#;#@#@#$#@#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$<#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$?(*#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$@#@&;$;6@?=@(6(;(;(;(@'@';@2<;=;?(;2@;'&'(+;'(';'(2?(&(?('+'?';@2'('(@'('@+'(&?;&@(='(&(&(&(@;@'(@;@'@'@'@(2()'()(')()()'('(;+;&'()@'@'@'@'@'@'@(')(@)@)('@)@'@'(@+'=-?=';(@()@'@'@'@'@'@'@'@(@)(@(@(@(@'@'@+('(;@()@'@'@'@'@'@'@(')(@()@)(@'@'(@+;=@'(@()@'@'@'@'@'@'@(')()(@)@)(@()@'@'(@+?'-@('@'@'@'@'@'@'@'@'@'@)()@)@)(@'@)@+-?=?@()('@'@'@'@'()@(@(@(@'@'(@+@;-?'();'@'@'@'@'@(')()@()@)(@)@'@'(@+@'@()'@'@'(')(@)@)('?@')-'(@+-?'@()@'@'@'@'@'@(@)(@(@)@+@);@'('(@='&(;+;@'@'@'@'@'@'('('@'@&@(@+@'@'?;?;?(?+-?(?(?(7878)'@'@()(;('(@(@?(?@?;?;@')()()()('+;')('(')')'('()()(')+)(?#@#@#@$;&$'@'@'@'@'@'@'@'@'@'@'@'@'@'@'@'@(;-@'?@#@$@6'?;'.'78@';,'@'@'(@'(;@'(@'@'@(@'()()()(;&;='(@+@-@;6;(2@+@'&'@'('('@'@'@()()@)()(@?@;+'@'@'@'@+-@?'()(@;')()(@()()()(@(+@+@;&;@(*(@()'()()()()'@+;?(?@()')()()('+'()()()()@;')()(@;+@'+'&;$@#@#;@(;()('('(')('@$&$&$&(@(#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$@#@$#$#$@#@$@#@#@#@#$#$@$%$%$%$@$#%>$>$@$#%>$@$#@>$#>@$@$#%>@.26;9:79:79;/02.;9:;5;<78;<;5;.2@2-&@-<78&-<78@&@=@(*(*(@?#?#?$#$#$?#?<#?#?#?#?#?$#$'$?$#<#$?&'6';&'@'@'@?-?'?@'?@-?-?-?-?-?'?'@'&'@?@'&;'&;'+'@#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$'(*;(;&#$#$#$#$#$#$#$#$#$#$#$#$#$#$&(',(;@>&>#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$&$#$#$#$#$#$#$#$&>#$#$'#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$@#$#$#$@#$'&$'('('(')()?(@-?=?@';@)')(@;+@(';';'(+'(;'()@;'@()'()()();@&+@;'(&'+'@'()()(@'('()@+@;'&'?')()'('('('('('@'&;')();'&)(@'@'@'@'@'@$>&$&>@$')()();)(@+@'@'@'@34'@'@$@$@'('<'@'@'@'@'@'>@'87@'@'@'=?@(;78;@(;657878787878787878;78;5;@;6787878;<6<@;=;@'@'@2@;=;78;<;6;+;<;#7;8>5>$7<8<78;78;'&'&'@'@'@'@'@=<>?=@??@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@+@'@'@'@'@'@'@'@2@2@(@4@4@"].map((e=>{var n;return(null!==(n=e.codePointAt(0))&&void 0!==n?n:0)-35})),t=new Uint32Array(e),r=new Uint8Array(n);for(let e=1;e{let n=t.length,o=0;for(;n-o>1;){const r=Math.floor((n+o)/2),i=t[r];if(efunction(e,n){return 0!=(1<=0&&n$(e,n),{Compare:(n,t)=>e(n,t)};var e}const oo="The input sequence has an insufficient number of elements.";function io(){throw new Error("Enumeration has not started. Call MoveNext.")}function so(){throw new Error("Enumeration already finished.")}class ao{constructor(e){this.f=e}toString(){let e=0,n="seq [";const t=a(this);try{for(;e<4&&t["System.Collections.IEnumerator.MoveNext"]();)e>0&&(n+="; "),n+=L(t["System.Collections.Generic.IEnumerator`1.get_Current"]()),e=e+1|0;return 4===e&&(n+="; ..."),n+"]"}finally{t.Dispose()}}GetEnumerator(){return this.f()}[Symbol.iterator](){return l(this.GetEnumerator())}"System.Collections.IEnumerable.GetEnumerator"(){return this.f()}}class lo{constructor(e,n,t){this.current=e,this.next=n,this.dispose=t}"System.Collections.Generic.IEnumerator`1.get_Current"(){return this.current()}"System.Collections.IEnumerator.get_Current"(){return this.current()}"System.Collections.IEnumerator.MoveNext"(){return this.next()}"System.Collections.IEnumerator.Reset"(){return function(){throw new Error("Reset is not supported on this enumerator.")}()}Dispose(){this.dispose()}}function co(e,n,t){return new lo(e,n,t)}function uo(e,n,t){let r,o=!1,i=Ln(e());const s=()=>{if(null!=i){const e=On(i);try{t(e)}finally{i=void 0}}},a=()=>{try{s()}finally{r=void 0}};return co((()=>(o||io(),null!=r?On(r):so())),(()=>{if(o||(o=!0),null!=i){const e=On(i);let t;try{t=n(e)}catch(e){throw a(),e}return null!=t?(r=t,!0):(a(),!1)}return!1}),s)}function po(e){return function(e){return new ao(e)}(e)}function fo(e){return n="source",null==e&&function(e){throw new Error(e)}(n),a(e);var n}function mo(e){return po((()=>a(e())))}function ho(e){return po((()=>function(e){let n,t,r,o=!1,i=!1;const s=()=>{if(i=!0,null!=t){const e=t;try{e.Dispose()}finally{t=void 0}}if(null!=n){const e=n;try{e.Dispose()}finally{n=void 0}}};return co((()=>(o?i&&so():io(),null!=r?On(r):so())),(()=>{let l;if(o||(o=!0),i)return!1;{let o;for(;null==o;){const i=[n,t];if(null!=i[0])if(null!=i[1]){const e=i[1];if(e["System.Collections.IEnumerator.MoveNext"]())r=Ln(e["System.Collections.Generic.IEnumerator`1.get_Current"]()),o=!0;else try{e.Dispose()}finally{t=void 0}}else{const e=i[0];e["System.Collections.IEnumerator.MoveNext"]()?(l=e["System.Collections.Generic.IEnumerator`1.get_Current"](),t=a(l)):(s(),o=!1)}else n=a(e)}return On(o)}}),(()=>{i||s()}))}(e)))}function go(e){return mo((()=>function(e,n){const t=Rn(void 0,1);return t[0]=e,t}(e)))}function bo(e){return r(e)?dt(e):e instanceof Gn?e:ut(e)}function vo(e,n,t){return po((()=>uo(e,n,t)))}function yo(e,n){return ho([e,n])}function xo(e,n){return function(n,t){return vo((()=>fo(t)),(n=>{let t;for(;null==t&&n["System.Collections.IEnumerator.MoveNext"]();)r=n["System.Collections.Generic.IEnumerator`1.get_Current"](),t=e(r)?Ln(r):void 0;var r;return t}),(e=>{e.Dispose()}))}(0,n)}function To(e,n){const t=fo(n);try{let n=!1;for(;!n&&t["System.Collections.IEnumerator.MoveNext"]();)n=e(t["System.Collections.Generic.IEnumerator`1.get_Current"]());return n}finally{t.Dispose()}}function So(e,n,t){const r=fo(t);try{let t=n;for(;r["System.Collections.IEnumerator.MoveNext"]();)t=e(t,r["System.Collections.Generic.IEnumerator`1.get_Current"]());return t}finally{r.Dispose()}}function Eo(e,n){return!To((n=>!e(n)),n)}function wo(e,n){return So(((n,t)=>{e(t)}),void 0,n)}function $o(e,n){So(((n,t)=>(e(n,t),n+1|0)),0,n)}function Io(e,n){return vo((()=>fo(n)),(n=>n["System.Collections.IEnumerator.MoveNext"]()?Ln(e(n["System.Collections.Generic.IEnumerator`1.get_Current"]())):void 0),(e=>{e.Dispose()}))}function ko(e,n){return po((()=>{const t=fo(n);try{for(let n=1;n<=e;n++)if(!t["System.Collections.IEnumerator.MoveNext"]())throw new Error(oo+"\\nParameter name: source");return function(e,n){return co((()=>n["System.Collections.Generic.IEnumerator`1.get_Current"]()),(()=>n["System.Collections.IEnumerator.MoveNext"]()),(()=>{try{n.Dispose()}finally{e()}}))}((()=>{}),t)}catch(e){throw t.Dispose(),e}}))}class Co{constructor(e){this.k=e}}function Ao(e){return new Co(e)}function Lo(e){return e.k}class Oo extends Co{constructor(e,n,t,r){super(e),this.left=n,this.right=t,this.h=0|r}}function _o(e,n,t,r){return new Oo(e,n,t,r)}function Po(e){return e.left}function No(e){return e.right}function Ro(e){return e.h}function Do(e,n){e:for(;;){const t=e,r=n;if(null!=t){const o=t;if(o instanceof Oo){e=Po(o),n=Do(No(o),r+1);continue e}return r+1|0}return 0|r}}function Mo(e){return Do(e,0)}function Ho(e,n,t){let r,o;if(null!=e){const n=e;r=n instanceof Oo?Ro(n):1}else r=0;if(null!=t){const e=t;o=e instanceof Oo?Ro(e):1}else o=0;const i=0|(ra+2){const i=On(t);if(i instanceof Oo){if(r=Po(i),(null!=r?(o=r,o instanceof Oo?Ro(o):1):0)>a+1){const t=On(Po(i));if(t instanceof Oo)return Ho(Ho(e,n,Po(t)),Lo(t),Ho(No(t),Lo(i),No(i)));throw new Error("internal error: Set.rebalance")}return Ho(Ho(e,n,Po(i)),Lo(i),No(i))}throw new Error("internal error: Set.rebalance")}if(a>l+2){const r=On(e);if(r instanceof Oo){if(i=No(r),(null!=i?(s=i,s instanceof Oo?Ro(s):1):0)>l+1){const e=On(No(r));if(e instanceof Oo)return Ho(Ho(Po(r),Lo(r),Po(e)),Lo(e),Ho(No(e),n,t));throw new Error("internal error: Set.rebalance")}return Ho(Po(r),Lo(r),Ho(No(r),n,t))}throw new Error("internal error: Set.rebalance")}return Ho(e,n,t)}function Uo(e,n,t){if(null!=t){const r=t,o=0|e.Compare(n,Lo(r));if(r instanceof Oo)return o<0?Fo(Uo(e,n,Po(r)),Lo(r),No(r)):0===o?t:Fo(Po(r),Lo(r),Uo(e,n,No(r)));{const o=0|e.Compare(n,Lo(r));return o<0?_o(n,void 0,t,2):0===o?t:_o(n,t,void 0,2)}}return Ao(n)}function Bo(e,n,t){e:for(;;){const r=e,o=n,i=t;if(null!=i){const s=i,a=0|r.Compare(o,Lo(s));if(s instanceof Oo){if(a<0){e=r,n=o,t=Po(s);continue e}if(0===a)return!0;e=r,n=o,t=No(s);continue e}return 0===a}return!1}}function jo(e,n){e:for(;;){const t=e,r=n;if(null!=r){const o=r;if(o instanceof Oo){jo(t,Po(o)),t(Lo(o)),e=t,n=No(o);continue e}t(Lo(o))}break}}class Go extends _{constructor(e,n){super(),this.stack=e,this.started=n}}function Wo(e){e:for(;;){const n=e;if(et(n))return Zn();{const t=tt(n),r=rt(n);if(null!=t){const o=t;if(o instanceof Oo){e=ct([Po(o),Ao(Lo(o)),No(o)],r);continue e}return n}e=r;continue e}}}function qo(e){return new Go(Wo(Qn(e)),!1)}function zo(e){if(e.started){const n=e.stack;if(et(n))return function(){throw new Error("Enumeration already started")}();if(null!=tt(n))return Lo(tt(n));throw new Error("Please report error: Set iterator, unexpected stack for current")}return function(){throw new Error("Enumeration not started")}()}function Ko(e){let n=qo(e);return{"System.Collections.Generic.IEnumerator`1.get_Current":()=>zo(n),"System.Collections.IEnumerator.get_Current":()=>zo(n),"System.Collections.IEnumerator.MoveNext":()=>function(e){if(e.started){const n=e.stack;if(et(n))return!1;if(null!=tt(n)){if(tt(n)instanceof Oo)throw new Error("Please report error: Set iterator, unexpected stack for moveNext");return e.stack=Wo(rt(n)),!et(e.stack)}throw new Error("Please report error: Set iterator, unexpected stack for moveNext")}return e.started=!0,!et(e.stack)}(n),"System.Collections.IEnumerator.Reset"(){n=qo(e)},Dispose(){}}}function Vo(e,n,t){return null==n?null==t?0:-1:null==t?1:0|function(e,n,t){e:for(;;){const r=e,o=n,i=t,s=[o,i];if(et(s[0]))return et(s[1])?0:-1;if(et(s[1]))return 1;if(null!=tt(s[1]))if(null!=tt(s[0])){const a=tt(s[0]),l=tt(s[1]);if(a instanceof Oo)if(null==Po(a)){if(!(l instanceof Oo)){const o=0|r.Compare(Lo(a),Lo(l));if(0!==o)return 0|o;e=r,n=Xn(No(a),rt(s[0])),t=Xn(void 0,rt(s[1]));continue e}if(null==Po(l)){const o=0|r.Compare(Lo(a),Lo(l));if(0!==o)return 0|o;e=r,n=Xn(No(a),rt(s[0])),t=Xn(No(l),rt(s[1]));continue e}{const s=[o,i];let a,l,c,d,u;switch(et(s[0])?et(s[1])?a=2:null!=tt(s[1])?(a=1,d=rt(s[1]),u=tt(s[1])):a=2:null!=tt(s[0])?(a=0,l=rt(s[0]),c=tt(s[0])):et(s[1])?a=2:null!=tt(s[1])?(a=1,d=rt(s[1]),u=tt(s[1])):a=2,a){case 0:if(c instanceof Oo){e=r,n=ct([Po(c),_o(Lo(c),void 0,No(c),0)],l),t=i;continue e}e=r,n=ct([void 0,Ao(Lo(c))],l),t=i;continue e;case 1:if(u instanceof Oo){e=r,n=o,t=ct([Po(u),_o(Lo(u),void 0,No(u),0)],d);continue e}e=r,n=o,t=ct([void 0,Ao(Lo(u))],d);continue e;case 2:throw new Error("unexpected state in SetTree.compareStacks")}}}else{const s=[o,i];let a,l,c,d,u;switch(et(s[0])?et(s[1])?a=2:null!=tt(s[1])?(a=1,d=rt(s[1]),u=tt(s[1])):a=2:null!=tt(s[0])?(a=0,l=rt(s[0]),c=tt(s[0])):et(s[1])?a=2:null!=tt(s[1])?(a=1,d=rt(s[1]),u=tt(s[1])):a=2,a){case 0:if(c instanceof Oo){e=r,n=ct([Po(c),_o(Lo(c),void 0,No(c),0)],l),t=i;continue e}e=r,n=ct([void 0,Ao(Lo(c))],l),t=i;continue e;case 1:if(u instanceof Oo){e=r,n=o,t=ct([Po(u),_o(Lo(u),void 0,No(u),0)],d);continue e}e=r,n=o,t=ct([void 0,Ao(Lo(u))],d);continue e;case 2:throw new Error("unexpected state in SetTree.compareStacks")}}else{if(!(l instanceof Oo)){const o=0|r.Compare(Lo(a),Lo(l));if(0!==o)return 0|o;e=r,n=rt(s[0]),t=rt(s[1]);continue e}if(null==Po(l)){const o=0|r.Compare(Lo(a),Lo(l));if(0!==o)return 0|o;e=r,n=Xn(void 0,rt(s[0])),t=Xn(No(l),rt(s[1]));continue e}{const s=[o,i];let a,l,c,d,u;switch(et(s[0])?et(s[1])?a=2:null!=tt(s[1])?(a=1,d=rt(s[1]),u=tt(s[1])):a=2:null!=tt(s[0])?(a=0,l=rt(s[0]),c=tt(s[0])):et(s[1])?a=2:null!=tt(s[1])?(a=1,d=rt(s[1]),u=tt(s[1])):a=2,a){case 0:if(c instanceof Oo){e=r,n=ct([Po(c),_o(Lo(c),void 0,No(c),0)],l),t=i;continue e}e=r,n=ct([void 0,Ao(Lo(c))],l),t=i;continue e;case 1:if(u instanceof Oo){e=r,n=o,t=ct([Po(u),_o(Lo(u),void 0,No(u),0)],d);continue e}e=r,n=o,t=ct([void 0,Ao(Lo(u))],d);continue e;case 2:throw new Error("unexpected state in SetTree.compareStacks")}}}}else{tt(s[1]);const a=[o,i];let l,c,d,u,p;switch(et(a[0])?et(a[1])?l=2:null!=tt(a[1])?(l=1,u=rt(a[1]),p=tt(a[1])):l=2:null!=tt(a[0])?(l=0,c=rt(a[0]),d=tt(a[0])):et(a[1])?l=2:null!=tt(a[1])?(l=1,u=rt(a[1]),p=tt(a[1])):l=2,l){case 0:if(d instanceof Oo){e=r,n=ct([Po(d),_o(Lo(d),void 0,No(d),0)],c),t=i;continue e}e=r,n=ct([void 0,Ao(Lo(d))],c),t=i;continue e;case 1:if(p instanceof Oo){e=r,n=o,t=ct([Po(p),_o(Lo(p),void 0,No(p),0)],u);continue e}e=r,n=o,t=ct([void 0,Ao(Lo(p))],u);continue e;case 2:throw new Error("unexpected state in SetTree.compareStacks")}}else{if(null==tt(s[0])){e=r,n=rt(s[0]),t=rt(s[1]);continue e}{tt(s[0]);const a=[o,i];let l,c,d,u,p;switch(et(a[0])?et(a[1])?l=2:null!=tt(a[1])?(l=1,u=rt(a[1]),p=tt(a[1])):l=2:null!=tt(a[0])?(l=0,c=rt(a[0]),d=tt(a[0])):et(a[1])?l=2:null!=tt(a[1])?(l=1,u=rt(a[1]),p=tt(a[1])):l=2,l){case 0:if(d instanceof Oo){e=r,n=ct([Po(d),_o(Lo(d),void 0,No(d),0)],c),t=i;continue e}e=r,n=ct([void 0,Ao(Lo(d))],c),t=i;continue e;case 1:if(p instanceof Oo){e=r,n=o,t=ct([Po(p),_o(Lo(p),void 0,No(p),0)],u);continue e}e=r,n=o,t=ct([void 0,Ao(Lo(p))],u);continue e;case 2:throw new Error("unexpected state in SetTree.compareStacks")}}}break}}(e,Qn(n),Qn(t))}function Jo(e,n,t){let r=0|t;jo((e=>{n[r]=e,r=r+1|0}),e)}function Yo(e,n){if(r(n))return function(e,n){return t=(n,t)=>Uo(e,t,n),n.reduce(((e,n)=>t(e,n)),void 0);var t}(e,n);if(n instanceof Gn)return function(e,n){return it(((n,t)=>Uo(e,t,n)),void 0,n)}(e,n);{const t=a(n);try{return function(e,n,t){for(;;){const r=e,o=n,i=t;if(!i["System.Collections.IEnumerator.MoveNext"]())return o;e=r,n=Uo(r,i["System.Collections.Generic.IEnumerator`1.get_Current"](),o),t=i}}(e,void 0,t)}finally{t.Dispose()}}}class Zo{constructor(e,n){this.comparer=e,this.tree=n}GetHashCode(){return 0|function(e){let n=0;const t=a(e);try{for(;t["System.Collections.IEnumerator.MoveNext"]();)n=(n<<1)+b(t["System.Collections.Generic.IEnumerator`1.get_Current"]())+631|0}finally{t.Dispose()}return 0|Math.abs(n)}(this)}Equals(e){return e instanceof Zo&&0===Vo(Qo(this),ei(this),ei(e))}toString(){return"set ["+En("; ",Io((e=>L(e)),this))+"]"}get[Symbol.toStringTag](){return"FSharpSet"}CompareTo(e){return 0|Vo(Qo(this),ei(this),ei(e))}"System.Collections.Generic.ICollection`1.Add2B595"(e){throw new Error("ReadOnlyCollection")}"System.Collections.Generic.ICollection`1.Clear"(){throw new Error("ReadOnlyCollection")}"System.Collections.Generic.ICollection`1.Remove2B595"(e){throw new Error("ReadOnlyCollection")}"System.Collections.Generic.ICollection`1.Contains2B595"(e){return Bo(Qo(this),e,ei(this))}"System.Collections.Generic.ICollection`1.CopyToZ2E171D71"(e,n){Jo(ei(this),e,n)}"System.Collections.Generic.ICollection`1.get_IsReadOnly"(){return!0}"System.Collections.Generic.ICollection`1.get_Count"(){return 0|ni(this)}"System.Collections.Generic.IReadOnlyCollection`1.get_Count"(){return 0|ni(this)}GetEnumerator(){return Ko(ei(this))}[Symbol.iterator](){return l(this.GetEnumerator())}"System.Collections.IEnumerable.GetEnumerator"(){return Ko(ei(this))}get size(){return 0|ni(this)}add(e){throw new Error("Set cannot be mutated")}clear(){throw new Error("Set cannot be mutated")}delete(e){throw new Error("Set cannot be mutated")}has(e){return ti(this,e)}keys(){return Io((e=>e),this)}values(){return Io((e=>e),this)}entries(){return Io((e=>[e,e]),this)}forEach(e,n){const t=this;wo((n=>{e(n,n,t)}),t)}}function Xo(e,n){return new Zo(e,n)}function Qo(e){return e.comparer}function ei(e){return e.tree}function ni(e){return Mo(ei(e))}function ti(e,n){return Bo(Qo(e),n,ei(e))}function ri(e,n){return ti(n,e)}function oi(e,n){return Xo(n,Yo(n,e))}function ii(e,n){return Xo(n,Yo(n,e))}const si=oi(dt(["break","checked","component","const","constraint","continue","event","external","fixed","include","mixin","parallel","params","process","protected","pure","sealed","tailcall","trait","virtual","asr","land","lor","lsl","lsr","lxor","mod","sig"]),{Compare:(e,n)=>E(e,n)}),ai=oi(dt(["abstract","and","as","assert","base","begin","class","default","delegate","do","done","downcast","downto","elif","else","end","exception","extern","false","finally","for","fun","function","global","if","in","inherit","inline","interface","internal","lazy","let","match","member","module","mutable","namespace","new","null","of","open","or","override","private","public","rec","return","sig","static","struct","then","to","true","try","type","upcast","use","val","void","when","while","with","yield"]),{Compare:(e,n)=>E(e,n)}),li=oi(dt(["Readonly","Partial","Pick","HTMLDialogElement","HTMLWebViewElement"]),{Compare:(e,n)=>E(e,n)});var ci=t(9368);function di(e){return $n(e,"\\","/")}function ui(e){const n=di(e);return n.indexOf("/")>=0?new Zr(1,ut(n.split("/"))):new Zr(0,void 0)}function pi(e){return Sn(e)?void 0:to(e,0)?e:void 0}function fi(e){return Sn(e)?"":e[0].toLocaleUpperCase()+Cn(e,1)}function mi(e){if(Sn(e))return"";{const n=Cn(e,1),t=e[0].toLocaleLowerCase();return hn(pn("%c%s"))(t)(n)}}function hi(e){return!(Sn(e)||!Eo((e=>!!Qr(e)||"_"===e),e.split(""))||"_"===e||no(e,0))}function gi(e){if(Sn(e))return"Empty";{const n=En("",gt((e=>fi(e)),function(e){const n=Io((e=>e),e.split(""));return st(((e,n,t)=>{let r,o;e:for(;;){const s=e,a=n,l=t;let c,d,u;if(et(l))c=0;else{const e=Sn(i=tt(l))?void 0:no(i,0)?i:void 0;null!=e?(o=e,et(a)&&""===s?(c=1,d=e,u=rt(l)):c=2):c=2}switch(c){case 0:return Xn(s,a);case 1:e="N"+d,n=a,t=u;continue e;case 2:{let o,i,c;if(et(l))o=1;else{const e=pi(tt(l));null!=e?(r=e,""===s?(o=0,i=e,c=rt(l)):o=1):o=1}switch(o){case 0:e=i,n=a,t=c;continue e;case 1:{let r,o,i;if(et(l))r=1;else{const e=pi(tt(l));null!=e?(r=0,o=e,i=rt(l)):r=1}switch(r){case 0:e=o,n=Xn(s,a),t=i;continue e;case 1:if(et(l))throw new Error("Match failure: Microsoft.FSharp.Collections.FSharpList`1");if("-"===tt(l)){e="",n=Xn(s,a),t=rt(l);continue e}if("."===tt(l)){e="_",n=Xn(s,a),t=rt(l);continue e}e=s+tt(l),n=a,t=rt(l);continue e}}}}}break}var i})("",Zn(),ut(n)))}(e)));return hi(n)?n:"``"+$n(n,"`","'")+"``"}}function bi(e,n){let t,r;return t=Cn(e,1),r=Cn(e,0,1).toLocaleLowerCase(),hn(pn("%s%s"))(r)(t)===n}function vi(e){const n=Io((e=>e),e.split(""));return st(((e,n,t)=>{for(;;){const r=e,o=n,i=t;if(et(i))return Xn(r,o);"-"!==tt(i)&&"/"!==tt(i)&&"."!==tt(i)?(e=r+tt(i),n=o,t=rt(i)):(e="",n=Xn(r,o),t=rt(i))}})("",Zn(),ut(n)))}function yi(e){if(Tn(e))return"";{const n=$n(e,"'","");return 0===n.indexOf("``")&&xn(n,"``")?n:ti(si,n)||ti(ai,n)||-1!==un(n,["-","/","$"])||n.length>0&&no(n,0)||-1!==un(Cn(n,0,1),[".","["])||"_"===n?hn(pn("``%s``"))(n):n}}function xi(e){const n=En("_",vi(fi($n(e,"'",""))));return ti(si,n)||ti(ai,n)?hn(pn("%s_"))(n):n}function Ti(e){if(Tn(e))return"";{const n=e[0];return'"'===n||"'"===n?In(e,n):e}}function Si(e){const n=ci.resolve(e),t=function(e,n,t,r){if(r="number"==typeof r?r:void 0,(t="number"==typeof t?t:void 0)&&t<0)throw new Error("Count cannot be less than zero");if(0===t)return[];if(!Array.isArray(n)){if(0===r)return e.split(n,t);const o=arguments.length;n=Array(o-1);for(let e=1;ern(e)))).length>0?n:[" "];let o=0;const i=[],s=new RegExp(n.join("|"),"g");for(;null==t||t>1;){const n=s.exec(e);if(null===n)break;(!r||n.index-o>0)&&(t=null!=t?t-1:t,i.push(e.substring(o,n.index))),o=s.lastIndex}return(!r||e.length-o>0)&&i.push(e.substring(o)),i}(n,[ci.sep],null,0),r=(o=e=>"node_modules"===e,(e=>{for(;;){const n=e;if(n<0)return;if(o(i[n]))return n;e=n-1}})((i=t).length-1));var o,i;if(null==r){const e=function(e){return 0===e.length?void 0:Ln(e[e.length-1])}(t);if(null!=e){if("index.d.ts"===e)return ci.basename(ci.dirname(n));{const n=e;return ci.basename(n,xn(n,".d.ts")?".d.ts":ci.extname(n))}}throw new Error("No path specified")}{const e=dt(t.slice(r+1,t.length));let n,o,i,s;switch(et(e)?n=2:"@types"===tt(e)?et(rt(e))?n=2:(n=0,o=tt(rt(e))):et(rt(e))?n=2:0===tt(e).indexOf("@")?(n=1,i=tt(rt(e)),s=tt(e)):n=2,n){case 0:return o.indexOf("__")>=0?"@"+$n(o,"__","/"):o;case 1:return s+"/"+i;case 2:return et(e)?"node_modules":tt(e)}}}const Ei=oi(dt(["string","obj","unit","float","bool"]),{Compare:(e,n)=>E(e,n)});var wi=t(5423);function $i(e,n){return e.replace(/[a-z]?[A-Z]/g,(e=>1===e.length?e.toLowerCase():e.charAt(0)+n+e.charAt(1).toLowerCase()))}function Ii(e,n=0){const t={},r=n;function o(e){throw new Error("Cannot infer key and value of "+String(e))}function i(e,n,r){e=function(e,n){switch(n){case 1:return e.charAt(0).toLowerCase()+e.slice(1);case 2:return $i(e,"_");case 3:return $i(e,"_").toUpperCase();case 4:return $i(e,"-");case 0:default:return e}}(e,n),t[e]=r}for(let n of e){let e=0;if(null==n&&o(n),n instanceof O){const t=n.cases()[n.tag];n=0===n.fields.length?t:[t].concat(n.fields),e=r}if(Array.isArray(n))switch(n.length){case 0:o(n);break;case 1:i(n[0],e,!0);break;case 2:const t=n[1];i(n[0],e,t);break;default:i(n[0],e,n.slice(1))}else"string"==typeof n?i(n,e,!0):o(n)}return t}function ki(e,n,t){return!!e.has(n)&&(t.contents=e.get(n),!0)}function Ci(e,n){return!n.has(e)&&(n.add(e),!0)}function Ai(e,n,t){if(e.has(n))throw new Error("An item with the same key has already been added. Key: "+n);e.set(n,t)}function Li(e,n){if(e.has(n))return e.get(n);throw new Error(`The given key '${n}' was not present in the dictionary.`)}class Oi{constructor(e,n){const t=new P(null);this.comparer=n,t.contents=this,this.hashMap=new Map([]),this["init@8-2"]=1;const r=a(e);try{for(;r["System.Collections.IEnumerator.MoveNext"]();)Ri(t.contents,r["System.Collections.Generic.IEnumerator`1.get_Current"]())}finally{r.Dispose()}}get[Symbol.toStringTag](){return"HashSet"}"System.Collections.IEnumerable.GetEnumerator"(){return a(this)}GetEnumerator(){return a(ho(this.hashMap.values()))}[Symbol.iterator](){return l(this.GetEnumerator())}"System.Collections.Generic.ICollection`1.Add2B595"(e){Ri(this,e)}"System.Collections.Generic.ICollection`1.Clear"(){Pi(this)}"System.Collections.Generic.ICollection`1.Contains2B595"(e){return Di(this,e)}"System.Collections.Generic.ICollection`1.CopyToZ2E171D71"(e,n){$o(((t,r)=>{e[n+t]=r}),this)}"System.Collections.Generic.ICollection`1.get_Count"(){return 0|Ni(this)}"System.Collections.Generic.ICollection`1.get_IsReadOnly"(){return!1}"System.Collections.Generic.ICollection`1.Remove2B595"(e){return Mi(this,e)}get size(){return 0|Ni(this)}add(e){return Ri(this,e),this}clear(){Pi(this)}delete(e){return Mi(this,e)}has(e){return Di(this,e)}keys(){return Io((e=>e),this)}values(){return Io((e=>e),this)}entries(){return Io((e=>[e,e]),this)}forEach(e,n){const t=this;wo((n=>{e(n,n,t)}),t)}}function _i(e,n){const t=0|e.comparer.GetHashCode(n);let r,o=null;return r=[ki(e.hashMap,t,new P((()=>o),(e=>{o=e}))),o],r[0]?[!0,t,r[1].findIndex((t=>e.comparer.Equals(n,t)))]:[!1,t,-1]}function Pi(e){e.hashMap.clear()}function Ni(e){let n=0,t=a(e.hashMap.values());try{for(;t["System.Collections.IEnumerator.MoveNext"]();)n=n+t["System.Collections.Generic.IEnumerator`1.get_Current"]().length|0}finally{t.Dispose()}return 0|n}function Ri(e,n){const t=_i(e,n);let r;switch(r=t[0]&&t[2]>-1?0:1,r){case 0:return!1;case 1:return t[0]?(Li(e.hashMap,t[1]).push(n),!0):(e.hashMap.set(t[1],[n]),!0)}}function Di(e,n){const t=_i(e,n);let r;switch(r=t[0]&&t[2]>-1?0:1,r){case 0:return!0;case 1:return!1}}function Mi(e,n){const t=_i(e,n);let r;switch(r=t[0]&&t[2]>-1?0:1,r){case 0:return Li(e.hashMap,t[1]).splice(t[2],1),!0;case 1:return!1}}class Hi{constructor(e,n){const t=new P(null);this.comparer=n,t.contents=this,this.hashMap=new Map([]),this["init@8-1"]=1;const r=a(e);try{for(;r["System.Collections.IEnumerator.MoveNext"]();){const e=r["System.Collections.Generic.IEnumerator`1.get_Current"]();Gi(t.contents,e[0],e[1])}}finally{r.Dispose()}}get[Symbol.toStringTag](){return"Dictionary"}"System.Collections.IEnumerable.GetEnumerator"(){return a(this)}GetEnumerator(){return a(ho(this.hashMap.values()))}[Symbol.iterator](){return l(this.GetEnumerator())}"System.Collections.Generic.ICollection`1.Add2B595"(e){Gi(this,e[0],e[1])}"System.Collections.Generic.ICollection`1.Clear"(){Bi(this)}"System.Collections.Generic.ICollection`1.Contains2B595"(e){const n=Ui(this,e[0]);let t;switch(t=null!=n&&T(n[1],e[1])?0:1,t){case 0:return!0;case 1:return!1}}"System.Collections.Generic.ICollection`1.CopyToZ2E171D71"(e,n){$o(((t,r)=>{e[n+t]=r}),this)}"System.Collections.Generic.ICollection`1.get_Count"(){return 0|ji(this)}"System.Collections.Generic.ICollection`1.get_IsReadOnly"(){return!1}"System.Collections.Generic.ICollection`1.Remove2B595"(e){const n=Ui(this,e[0]);return null!=n&&(T(n[1],e[1])&&Wi(this,e[0]),!0)}get size(){return 0|ji(this)}clear(){Bi(this)}delete(e){return Wi(this,e)}entries(){return Io((e=>[e[0],e[1]]),this)}get(e){return function(e,n){const t=Ui(e,n);if(null!=t)return t[1];throw new Error("The item was not found in collection")}(this,e)}has(e){return function(e,n){const t=Fi(e,n);let r;switch(r=t[0]&&t[2]>-1?0:1,r){case 0:return!0;case 1:return!1}}(this,e)}keys(){return Io((e=>e[0]),this)}set(e,n){return function(e,n,t){const r=Fi(e,n);let o;switch(o=r[0]&&r[2]>-1?0:1,o){case 0:Li(e.hashMap,r[1])[r[2]]=[n,t];break;case 1:r[0]?Li(e.hashMap,r[1]).push([n,t]):e.hashMap.set(r[1],[[n,t]])}}(this,e,n),this}values(){return Io((e=>e[1]),this)}forEach(e,n){const t=this;wo((n=>{e(n[1],n[0],t)}),t)}}function Fi(e,n){const t=0|e.comparer.GetHashCode(n);let r,o=null;return r=[ki(e.hashMap,t,new P((()=>o),(e=>{o=e}))),o],r[0]?[!0,t,r[1].findIndex((t=>e.comparer.Equals(n,t[0])))]:[!1,t,-1]}function Ui(e,n){const t=Fi(e,n);let r;switch(r=t[0]&&t[2]>-1?0:1,r){case 0:return Li(e.hashMap,t[1])[t[2]];case 1:return}}function Bi(e){e.hashMap.clear()}function ji(e){let n=0,t=a(e.hashMap.values());try{for(;t["System.Collections.IEnumerator.MoveNext"]();)n=n+t["System.Collections.Generic.IEnumerator`1.get_Current"]().length|0}finally{t.Dispose()}return 0|n}function Gi(e,n,t){const r=Fi(e,n);let o;switch(o=r[0]&&r[2]>-1?0:1,o){case 0:{const e=yn("An item with the same key has already been added. Key: {0}",n);throw new Error(e)}case 1:r[0]?Li(e.hashMap,r[1]).push([n,t]):e.hashMap.set(r[1],[[n,t]])}}function Wi(e,n){const t=Fi(e,n);let r;switch(r=t[0]&&t[2]>-1?0:1,r){case 0:return Li(e.hashMap,t[1]).splice(t[2],1),!0;case 1:return!1}}function qi(e,n){return bo(function(e,n){return mo((()=>{const t=new Oi([],n);return xo((e=>Ci(e,t)),e)}))}(e,n))}function zi(e){e:for(;;){const n=e;switch(n.tag){case 7:return n.fields[0].Name;case 4:{const e=zi(n.fields[0]);return hn(pn("ResizeArray<%s>"))(e)}case 9:{const e=n.fields[0];if(1===nt(e.Types)){const n=e.Option?" option":"",t=zi(xt(0,e.Types));return hn(pn("%s%s"))(t)(n)}{const n=[];let t;const r=0|nt(e.Types);t=hn(pn("U%d<"))(r),n.push(t);const o=En(", ",gt((e=>zi(e)),e.Types));let i;n.push(o);const s=e.Option?" option":"";return i=hn(pn(">%s"))(s),n.push(i),En("",n)}}case 11:return Ki(n.fields[0]);case 8:{const e=n.fields[0],t=[],r=0===nt(e.Params)?dt([Gr("unit"),e.ReturnType]):ft(gt((e=>e.Type),e.Params),Qn(e.ReturnType));t.push("(");const o=En(" -> ",gt((e=>zi(e)),r));return t.push(o),t.push(")"),En("",t)}case 12:{const e=[],t=En(" * ",gt((e=>zi(e)),n.fields[0].Types));return e.push(t),En("",e)}case 16:{const e=n.fields[0],t=zi(e.Type),r=e.IsConst?"":" with get, set";return hn(pn("abstract %s: %s%s"))(e.Name)(t)(r)}case 17:return"string";case 2:e=n.fields[0].Type;continue e;case 1:{const e=Jr(n),t=Yr(n);return mn(pn("unextracted printType %s: %s"))(t)(e),Vi(n.fields[0])}case 22:return n.fields[0].Name;case 23:{const e=zi(n.fields[0].Type);return hn(pn("KeyOf<%s>"))(e)}default:{const e=Jr(n),t=Yr(n);return mn(pn("unsupported printType %s: %s"))(t)(e),"obj"}}break}}function Ki(e){const n=[];let t;const r=zi(e.Type);if(t=hn(pn("%s"))(r),n.push(t),nt(e.TypeParameters)>0){n.push("<");const t=En(", ",gt((e=>zi(e)),e.TypeParameters));n.push(t),n.push(">")}return En("",n)}function Vi(e){switch(Hr(e).tag){case 1:return"string";case 2:return"obj";default:return"float"}}function Ji(e){const n=[],t=e.Kind;switch(t.tag){case 1:n.push("[] ");break;case 2:n.push('[] ');break;case 3:{const e=hn(pn('[] '))(t.fields[0]);n.push(e);break}}let r;const o=On(e.Name);r=hn(pn("abstract %s"))(o),n.push(r);const i=gt((n=>{if(n.ParamArray){let t;const r=n.Type;if(4===r.tag){const e=zi(r.fields[0]);t=hn(pn("%s[]"))(e)}else{const r=Jr(new kr(8,e));mn(pn("ParamArray function is not an array type: %s"))(r),t=zi(n.Type)}const o=n.Optional?"?":"";return hn(pn("[] %s%s: %s"))(o)(n.Name)(t)}{const e=zi(n.Type),t=n.Optional?"?":"";return hn(pn("%s%s: %s"))(t)(n.Name)(e)}}),e.Params);if(0===nt(i)){const e=hn(pn(": unit"));n.push(e)}else{let e;const t=En(" * ",i);e=hn(pn(": %s"))(t),n.push(e)}let s;const a=zi(e.ReturnType);s=hn(pn(" -> %s"))(a),n.push(s);const l=Zi(e.TypeParameters);return n.push(l),En("",n)}function Yi(e){let n;switch(e.Accessor.tag){case 1:n=" with set";break;case 2:n=" with get, set";break;default:n=""}const t=e.Option?" option":"";let r;const o=zi(e.Type),i=[e.Option,(s=e.Type,12===s.tag?s.fields[0]:void 0)];var s;let a,l;switch(a=i[0]&&null!=i[1]&&1===i[1].Kind.tag&&nt(i[1].Types)>1?0:1,a){case 0:r=hn(pn("(%s)"))(o);break;case 1:r=o}const c=e.Index;if(null!=c){const e=c,n=zi(e.Type);l=hn(pn("%s: %s -> "))(e.Name)(n)}else l="";const d=1===e.Kind.tag?"[] ":"";return hn(pn("%sabstract %s: %s%s%s%s"))(d)(e.Name)(l)(r)(t)(n)}function Zi(e){const n=St((e=>function(e){const n=e.Constraint;if(null!=n){const t=n=>hn(pn("%s :> %s"))(e.Name)(n),r=e=>{let n,o,i,s;switch(7===e.tag?(n=0,o=e.fields[0]):11===e.tag?(n=1,i=e.fields[0]):12===e.tag&&T(e.fields[0].Kind,new cr(0))?(n=2,s=e.fields[0]):n=3,n){case 0:return t(o.Name);case 1:return t(Ki(i));case 2:{const e=St(r,s.Types);return et(e)?void 0:En(" and ",e)}case 3:return}};return r(n)}}(e)),St((e=>zr(e)),e));if(et(n))return"";{const e=En(" and ",n);return hn(pn(" when %s"))(e)}}function Xi(e){if(0===nt(e))return"";{const n=[];n.push("<");const t=En(", ",gt((e=>zi(e)),e));n.push(t);const r=Zi(e);return n.push(r),n.push(">"),En("",n)}}function Qi(e,n,t){const r=t=>{const r=hn(pn("%s/// %s"))(n)(t);e.push(r)},o=e=>{at(r,e)},i=(e,n,t)=>{let i;if(et(n))i=e;else{const t=En(" ",gt((e=>hn(pn('%s="%s"'))(e[0])(e[1])),n));i=hn(pn("%s %s"))(e)(t)}et(t)?r(hn(pn("<%s />"))(i)):et(rt(t))?r(hn(pn("<%s>%s"))(i)(tt(t))(e)):(r(hn(pn("<%s>"))(i)),o(t),r(hn(pn(""))(e)))};let s,l;switch(et(t)?s=0:0===tt(t).tag&&et(rt(t))&&wt((e=>!Br(e)),tt(t).fields[0])?(s=1,l=tt(t).fields[0]):s=2,s){case 0:break;case 1:o(l);break;case 2:{const e=a(t);try{for(;e["System.Collections.IEnumerator.MoveNext"]();){const n=e["System.Collections.Generic.IEnumerator`1.get_Current"]();switch(n.tag){case 1:{const e=n.fields[0];i("param",Qn(["name",e.Name]),e.Content);break}case 3:i("returns",Zn(),n.fields[0]);break;case 4:i("remarks",Zn(),n.fields[0]);break;case 5:{const e=n.fields[0];i("seealso",Qn([1===e.Type.tag?"cref":"href",e.Target]),e.Content);break}case 2:{const e=n.fields[0];i("typeparam",Qn(["name",e.Name]),e.Content);break}case 6:i("example",Zn(),n.fields[0]);break;case 7:{const e=n.fields[0];i("exception",Qn(["cref",_n(e.Type,"")]),e.Content);break}case 8:i("version",Zn(),n.fields[0]);break;case 9:i("default",Zn(),n.fields[0]);break;case 10:{const e=n.fields[0];i(e.Name,Zn(),e.Content);break}case 11:case 12:break;default:i("summary",Zn(),n.fields[0])}}}finally{e.Dispose()}break}}}function es(e,n,t){if(et(t));else{const r=a(t);try{for(;r["System.Collections.IEnumerator.MoveNext"]();)if(et(t));else{const t=En("; ",gt((e=>{let n;const t=e.Namespace;if(null!=t){const r=t;n=hn(pn("%s.%s"))(r)(e.Name)}else n=e.Name;const r=e.Arguments;if(et(r))return n;{const e=En(", ",gt((e=>{const n=e.Name;if(null==n)return e.Value;{const t=n;return hn(pn("%s = %s"))(t)(e.Value)}}),r));return hn(pn("%s(%s)"))(n)(e)}}),r["System.Collections.Generic.IEnumerator`1.get_Current"]())),o=hn(pn("%s[<%s>]"))(n)(t);e.push(o)}}finally{r.Dispose()}}}function ns(e,n,t){const r=hn(pn(""));switch(e.push(r),Qi(e,n,t.Comments),es(e,n,t.Attributes),Hr(t).tag){case 1:{const r=hn(pn("%stype [] [] %s ="))(n)(t.Name);e.push(r);const o=a(t.Cases);try{for(;o["System.Collections.IEnumerator.MoveNext"]();){const t=o["System.Collections.Generic.IEnumerator`1.get_Current"]();Qi(e,n+" ",t.Comments),es(e,n+" ",t.Attributes);const r=t.Name,i=$n(_n(t.Value,r),'"','\\"'),s=gi(r),a=[];if(bi(s,i)){const e=hn(pn(" | %s"))(s);a.push(e)}else{const e=hn(pn(' | [] %s'))(i)(s);a.push(e)}let l;const c=En("",a);l=hn(pn("%s%s"))(n)(c),e.push(l)}}finally{o.Dispose()}break}case 2:{const r=hn(pn("%stype %s ="))(n)(t.Name);e.push(r);const o=hn(pn("%s obj"))(n);e.push(o);break}default:{const r=hn(pn("%stype [] %s ="))(n)(t.Name);e.push(r);const o=a(t.Cases);try{for(;o["System.Collections.IEnumerator.MoveNext"]();){const t=o["System.Collections.Generic.IEnumerator`1.get_Current"]();Qi(e,n+" ",t.Comments),es(e,n+" ",t.Attributes);const r=gi(t.Name),i=[],s=hn(pn(" | %s"))(r);if(i.push(s),null!=t.Value){let e;const n=On(t.Value);e=hn(pn(" = %s"))(n),i.push(e)}let a;const l=En("",i);a=hn(pn("%s%s"))(n)(l),e.push(a)}}finally{o.Dispose()}}}}function ts(e,n,t){const r=0|e.length;let o;if(""!==t.Name){e.push(""),Qi(e,n,t.Comments),es(e,n,t.Attributes);const r=hn(pn("%smodule %s ="))(n)(t.Name);e.push(r),o=hn(pn("%s "))(n)}else o=n;const i=a(t.HelperLines);try{for(;i["System.Collections.IEnumerator.MoveNext"]();){const n=i["System.Collections.Generic.IEnumerator`1.get_Current"](),t=hn(pn("%s%s"))(o)(n);e.push(t)}}finally{i.Dispose()}const s=a(t.Types);try{for(;s["System.Collections.IEnumerator.MoveNext"]();){const n=s["System.Collections.Generic.IEnumerator`1.get_Current"]();if(20===n.tag){const t=n.fields[0];if(1===t.tag){const n=t.fields[0];if(n.Module!==n.SpecifiedModule){const t=hn(pn("%smodule %s = %s"))(o)(n.Module)(n.SpecifiedModule);e.push(t)}}}}}finally{s.Dispose()}const l=a(t.Types);try{for(;l["System.Collections.IEnumerator.MoveNext"]();){const n=l["System.Collections.Generic.IEnumerator`1.get_Current"]();if(20===n.tag){const t=n.fields[0];if(0===t.tag){const n=t.fields[0],r=n.ImportSpecifier,i=r.PropertyName;if(null==i){const t=hn(pn("%stype %s = %s.%s"))(o)(r.Name)(n.SpecifiedModule)(r.Name);e.push(t)}else{const t=i,s=hn(pn("%stype %s = %s.%s"))(o)(r.Name)(n.SpecifiedModule)(t);e.push(s)}}}}}finally{l.Dispose()}const c=a(t.Types);try{for(;c["System.Collections.IEnumerator.MoveNext"]();){const n=c["System.Collections.Generic.IEnumerator`1.get_Current"]();switch(n.tag){case 0:{const t=n.fields[0],r=t.Members;let i,s;switch(et(r)?i=1:1===tt(r).tag&&et(rt(r))?(i=0,s=tt(r).fields[0]):i=1,i){case 0:ns(e,o,new Ft(s.Attributes,ft(t.Comments,s.Comments),t.Name,s.Cases));break;case 1:{const n=hn(pn(""));let r;e.push(n),Qi(e,o,t.Comments),es(e,o,t.Attributes);const i=Xi(t.TypeParameters);r=hn(pn("%stype [] %s%s ="))(o)(t.Name)(i),e.push(r);const s=new P(0),l=a(t.Inherits);try{for(;l["System.Collections.IEnumerator.MoveNext"]();){let n;const t=zi(l["System.Collections.Generic.IEnumerator`1.get_Current"]());n=hn(pn("%s inherit %s"))(o)(t),e.push(n),s.contents++}}finally{l.Dispose()}const c=a(t.Members);try{for(;c["System.Collections.IEnumerator.MoveNext"]();){const n=c["System.Collections.Generic.IEnumerator`1.get_Current"](),t=hn(pn("%s "))(o);switch(n.tag){case 8:{const r=n.fields[0];let o;Qi(e,t,r.Comments),es(e,t,r.Attributes);const i=Ji(r);o=hn(pn("%s%s"))(t)(i),e.push(o),s.contents++;break}case 2:{const r=n.fields[0];let o;Qi(e,t,r.Comments),es(e,t,r.Attributes);const i=Yi(r);o=hn(pn("%s%s"))(t)(i),e.push(o),s.contents++;break}case 16:{const r=n.fields[0];let o;Qi(e,t,r.Comments),es(e,t,r.Attributes);const i=zi(n);o=hn(pn("%s%s"))(t)(i),e.push(o),s.contents++;break}default:{let r;const o=zi(n);r=hn(pn("%s %s"))(t)(o),e.push(r),s.contents++}}}}finally{c.Dispose()}if(0===s.contents){const n=hn(pn("%s interface end"))(o);e.push(n)}break}}break}case 1:ns(e,o,n.fields[0]);break;case 10:{const t=n.fields[0],r=hn(pn(""));let i;e.push(r),Qi(e,o,t.Comments),es(e,o,t.Attributes);const s=Xi(t.TypeParameters);let a;i=hn(pn("%stype %s%s ="))(o)(t.Name)(s),e.push(i);const l=zi(t.Type);a=hn(pn("%s %s"))(o)(l),e.push(a);break}case 13:ts(e,o,n.fields[0]);break;case 16:{const t=n.fields[0];if(t.HasDeclare){let n;Qi(e,o,t.Comments),es(e,o,t.Attributes);const r=zi(t.Type);let i;const s=t.Export;if(null!=s){const e=s;i=e.IsGlobal?"[] ":hn(pn('[] '))(e.Selector)(e.Path)}else i="";n=hn(pn("%slet %s%s: %s = jsNative"))(o)(i)(t.Name)(r),e.push(n)}break}}}}finally{c.Dispose()}if(e.length-r==2)for(let n=0;n<=1;n++)e.splice(e.length-1,1)}class rs{constructor(e,n){this.k=e,this.v=n}}function os(e,n){return new rs(e,n)}function is(e){return e.k}function ss(e){return e.v}class as extends rs{constructor(e,n,t,r,o){super(e,n),this.left=t,this.right=r,this.h=0|o}}function ls(e,n,t,r,o){return new as(e,n,t,r,o)}function cs(e){return e.left}function ds(e){return e.right}function us(e){return e.h}function ps(e,n){e:for(;;){const t=e,r=n;if(null!=r){const o=r;if(o instanceof as){e=ps(t+1,cs(o)),n=ds(o);continue e}return t+1|0}return 0|t}}function fs(e){return ps(0,e)}function ms(e,n,t,r){let o,i;if(null!=e){const n=e;o=n instanceof as?us(n):1}else o=0;if(null!=r){const e=r;i=e instanceof as?us(e):1}else i=0;const s=0|(ol+2){const s=On(r);if(s instanceof as){if(o=cs(s),(null!=o?(i=o,i instanceof as?us(i):1):0)>l+1){const r=On(cs(s));if(r instanceof as)return ms(ms(e,n,t,cs(r)),is(r),ss(r),ms(ds(r),is(s),ss(s),ds(s)));throw new Error("internal error: Map.rebalance")}return ms(ms(e,n,t,cs(s)),is(s),ss(s),ds(s))}throw new Error("internal error: Map.rebalance")}if(l>c+2){const o=On(e);if(o instanceof as){if(s=ds(o),(null!=s?(a=s,a instanceof as?us(a):1):0)>c+1){const e=On(ds(o));if(e instanceof as)return ms(ms(cs(o),is(o),ss(o),cs(e)),is(e),ss(e),ms(ds(e),n,t,r));throw new Error("internal error: Map.rebalance")}return ms(cs(o),is(o),ss(o),ms(ds(o),n,t,r))}throw new Error("internal error: Map.rebalance")}return ms(e,n,t,r)}function gs(e,n,t,r){if(null!=r){const o=r,i=0|e.Compare(n,is(o));return o instanceof as?i<0?hs(gs(e,n,t,cs(o)),is(o),ss(o),ds(o)):0===i?ls(n,t,cs(o),ds(o),us(o)):hs(cs(o),is(o),ss(o),gs(e,n,t,ds(o))):i<0?ls(n,t,void 0,r,2):0===i?os(n,t):ls(n,t,r,void 0,2)}return os(n,t)}function bs(e,n){e:for(;;){const t=e,r=n;if(null!=r){const o=r;if(o instanceof as){bs(t,cs(o)),t(is(o),ss(o)),e=t,n=ds(o);continue e}t(is(o),ss(o))}break}}function vs(e,n){bs(e,n)}function ys(e,n){if(r(n))return function(e,n){let t;for(let r=0;r<=n.length-1;r++){const o=n[r];t=gs(e,o[0],o[1],t)}return t}(e,n);if(n instanceof Gn)return function(e,n){return it(((n,t)=>gs(e,t[0],t[1],n)),void 0,n)}(e,n);{const t=a(n);try{return function(e,n,t){for(;;){const r=e,o=n,i=t;if(!i["System.Collections.IEnumerator.MoveNext"]())return o;{const s=i["System.Collections.Generic.IEnumerator`1.get_Current"]();e=r,n=gs(r,s[0],s[1],o),t=i}}}(e,void 0,t)}finally{t.Dispose()}}}class xs extends _{constructor(e,n){super(),this.stack=e,this.started=n}}function Ts(e){e:for(;;){const n=e;if(et(n))return Zn();{const t=rt(n),r=tt(n);if(null!=r){const o=r;if(o instanceof as){e=ct([cs(o),os(is(o),ss(o)),ds(o)],t);continue e}return n}e=t;continue e}}}function Ss(e){return new xs(Ts(Qn(e)),!1)}function Es(e){if(e.started){const n=e.stack;if(et(n))return function(){throw new Error("enumeration already finished")}();if(null!=tt(n)){const e=tt(n);if(e instanceof as)throw new Error("Please report error: Map iterator, unexpected stack for current");return[is(e),ss(e)]}throw new Error("Please report error: Map iterator, unexpected stack for current")}return function(){throw new Error("enumeration not started")}()}function ws(e){let n=Ss(e);return{"System.Collections.Generic.IEnumerator`1.get_Current":()=>Es(n),"System.Collections.IEnumerator.get_Current":()=>Es(n),"System.Collections.IEnumerator.MoveNext":()=>function(e){if(e.started){const n=e.stack;if(et(n))return!1;if(null!=tt(n)){if(tt(n)instanceof as)throw new Error("Please report error: Map iterator, unexpected stack for moveNext");return e.stack=Ts(rt(n)),!et(e.stack)}throw new Error("Please report error: Map iterator, unexpected stack for moveNext")}return e.started=!0,!et(e.stack)}(n),"System.Collections.IEnumerator.Reset"(){n=Ss(e)},Dispose(){}}}class $s{constructor(e,n){this.comparer=e,this.tree=n}GetHashCode(){return 0|function(e){const n=(e,n)=>(e<<1)+n+631;let t=0;const r=a(e);try{for(;r["System.Collections.IEnumerator.MoveNext"]();){const e=r["System.Collections.Generic.IEnumerator`1.get_Current"]();t=0|n(t,b(e[0])),t=0|n(t,b(e[1]))}}finally{r.Dispose()}return 0|t}(this)}Equals(e){if(!(e instanceof $s))return!1;{const n=a(this);try{const t=a(e);try{const e=()=>{const r=n["System.Collections.IEnumerator.MoveNext"]();if(r===t["System.Collections.IEnumerator.MoveNext"]()){if(r){const r=n["System.Collections.Generic.IEnumerator`1.get_Current"](),o=t["System.Collections.Generic.IEnumerator`1.get_Current"]();return!(!T(r[0],o[0])||!T(r[1],o[1]))&&e()}return!0}return!1};return e()}finally{t.Dispose()}}finally{n.Dispose()}}}toString(){return"map ["+En("; ",Io((e=>yn("({0}, {1})",e[0],e[1])),this))+"]"}get[Symbol.toStringTag](){return"FSharpMap"}GetEnumerator(){return ws(this.tree)}[Symbol.iterator](){return l(this.GetEnumerator())}"System.Collections.IEnumerable.GetEnumerator"(){return ws(this.tree)}CompareTo(e){const n=this;if(e instanceof $s)return 0|function(e,n,t){const r=fo(n);try{const n=fo(t);try{let t=0,o=r["System.Collections.IEnumerator.MoveNext"](),i=n["System.Collections.IEnumerator.MoveNext"]();for(;0===t&&o&&i;)t=0|e(r["System.Collections.Generic.IEnumerator`1.get_Current"](),n["System.Collections.Generic.IEnumerator`1.get_Current"]()),0===t&&(o=r["System.Collections.IEnumerator.MoveNext"](),i=n["System.Collections.IEnumerator.MoveNext"]());return 0|(0!==t?t:o?1:i?-1:0)}finally{n.Dispose()}}finally{r.Dispose()}}(((e,t)=>{const r=0|n.comparer.Compare(e[0],t[0]);return 0|(0!==r?r:$(e[1],t[1]))}),n,e);throw new Error("not comparable\\nParameter name: obj")}"System.Collections.Generic.ICollection`1.Add2B595"(e){throw new Error("Map cannot be mutated")}"System.Collections.Generic.ICollection`1.Clear"(){throw new Error("Map cannot be mutated")}"System.Collections.Generic.ICollection`1.Remove2B595"(e){throw new Error("Map cannot be mutated")}"System.Collections.Generic.ICollection`1.Contains2B595"(e){return!!As(this,e[0])&&T(ks(this,e[0]),e[1])}"System.Collections.Generic.ICollection`1.CopyToZ2E171D71"(e,n){!function(e,n,t){let r=0|t;vs(((e,t)=>{n[r]=[e,t],r=r+1|0}),e)}(this.tree,e,n)}"System.Collections.Generic.ICollection`1.get_IsReadOnly"(){return!0}"System.Collections.Generic.ICollection`1.get_Count"(){return 0|Cs(this)}"System.Collections.Generic.IReadOnlyCollection`1.get_Count"(){return 0|Cs(this)}get size(){return 0|Cs(this)}clear(){throw new Error("Map cannot be mutated")}delete(e){throw new Error("Map cannot be mutated")}entries(){return Io((e=>[e[0],e[1]]),this)}get(e){return ks(this,e)}has(e){return As(this,e)}keys(){return Io((e=>e[0]),this)}set(e,n){throw new Error("Map cannot be mutated")}values(){return Io((e=>e[1]),this)}forEach(e,n){const t=this;wo((n=>{e(n[1],n[0],t)}),t)}}function Is(e,n){return new $s(e,n)}function ks(e,n){return function(e,n,t){const r=function(e,n,t){e:for(;;){const r=e,o=n,i=t;if(null!=i){const s=i,a=0|r.Compare(o,is(s));if(0===a)return Ln(ss(s));if(s instanceof as){e=r,n=o,t=a<0?cs(s):ds(s);continue e}return}return}}(e,n,t);if(null==r)throw new Error;return On(r)}(e.comparer,n,e.tree)}function Cs(e){return fs(e.tree)}function As(e,n){return function(e,n,t){e:for(;;){const r=e,o=n,i=t;if(null!=i){const s=i,a=0|r.Compare(o,is(s));if(s instanceof as){if(a<0){e=r,n=o,t=cs(s);continue e}if(0===a)return!0;e=r,n=o,t=ds(s);continue e}return 0===a}return!1}}(e.comparer,n,e.tree)}function Ls(e,n){return ks(n,e)}function Os(e,n){return As(n,e)}function _s(e){const n=[];return Ms(((e,t)=>(n.push(t),t)),e),ut(n)}function Ps(e){return mt((e=>_s(e)),e)}function Ns(e,n,t,r){const o=13===r.tag?e:e+(c=Jr(r),d=En("",gt((e=>fi(e)),vi(In(c,"`")))),Array.from(Io((e=>Qr(e)?e:"_"),d.split(""))).join("")),i=e=>Ns(o,n,t,e),s=e=>new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,gt(i,e.Types),e.HelperLines,e.Attributes),a=e=>new _r(e.Kind,e.FileName,e.ModuleName,gt(s,e.Modules)),l=e=>{const n=t(o,new kr(3,new Vt(e.Name,e.Optional,e.ParamArray,i(e.Type))));return 3===n.tag?n.fields[0]:gn(pn("param must be mapped to param"))};var c,d;let u;if(n(r))switch(r.tag){case 21:u=new kr(21,new Pt(gt(i,r.fields[0].Members)));break;case 2:{const e=r.fields[0];u=new kr(2,new nr(e.Attributes,e.Comments,e.Kind,Pn(l,e.Index),e.Name,e.Option,i(e.Type),e.Accessor,e.IsStatic,e.Accessibility));break}case 3:{const e=r.fields[0];u=new kr(3,new Vt(e.Name,e.Optional,e.ParamArray,i(e.Type)));break}case 4:u=new kr(4,i(r.fields[0]));break;case 8:{const e=r.fields[0];u=new kr(8,new Zt(e.Attributes,e.Comments,e.Kind,e.IsStatic,e.Name,gt(i,e.TypeParameters),gt(l,e.Params),i(e.ReturnType),e.Accessibility));break}case 9:{const e=r.fields[0];u=new kr(9,new ir(e.Option,gt(i,e.Types)));break}case 10:{const e=r.fields[0];u=new kr(10,new ar(e.Attributes,e.Comments,e.Name,i(e.Type),gt(i,e.TypeParameters)));break}case 11:{const e=r.fields[0];u=new kr(11,new rr(i(e.Type),gt(i,e.TypeParameters)));break}case 12:{const e=r.fields[0];u=new kr(12,new dr(gt(i,e.Types),e.Kind));break}case 13:u=new kr(13,s(r.fields[0]));break;case 14:u=new kr(14,a(r.fields[0]));break;case 15:{const e=r.fields[0];u=new kr(15,new Nr(e.Namespace,e.Opens,gt(a,e.Files),e.AbbrevTypes));break}case 16:{const e=r.fields[0];u=new kr(16,new vr(e.Attributes,e.Comments,e.Export,e.HasDeclare,e.Name,i(e.Type),e.IsConst,e.IsStatic,e.Accessibility));break}case 18:case 1:case 7:case 6:case 5:case 17:case 19:case 20:u=r;break;case 22:{const e=r.fields[0];u=new kr(22,new Rt(e.Name,Pn(i,e.Constraint),Pn(i,e.Default)));break}case 23:u=new kr(23,new xr(i(r.fields[0].Type)));break;default:{const e=r.fields[0];u=new kr(0,new Ot(e.Attributes,e.Comments,e.IsStatic,e.IsClass,e.Name,e.FullName,gt(i,e.TypeParameters),gt(i,e.Inherits),gt(i,e.Members),e.Accessibility))}}else u=r;return n(u)?t(o,u):u}function Rs(e,n,t){return Ns(e,(e=>!0),n,t)}function Ds(e,n,t){return new _r(t.Kind,t.FileName,t.ModuleName,St((e=>qr(e)),gt((t=>Ns("",e,n,t)),gt((e=>new kr(13,e)),t.Modules))))}function Ms(e,n){return Ds((e=>!0),e,n)}function Hs(e){const n=new Map([]),t=[],r=a(e);try{for(;r["System.Collections.IEnumerator.MoveNext"]();){const e=r["System.Collections.Generic.IEnumerator`1.get_Current"]();if(0===e.tag){const r=e.fields[0];if(n.has(r.Name)){const e=0|Li(n,r.Name),o=t[e];if(0===o.tag){const n=o.fields[0];t[e]=new kr(0,new Ot(n.Attributes,n.Comments,n.IsStatic,n.IsClass,n.Name,n.FullName,n.TypeParameters,qi(ft(n.Inherits,r.Inherits),{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)}),ft(n.Members,r.Members),n.Accessibility))}}else t.push(e),Ai(n,r.Name,t.length-1)}else t.push(e)}}finally{r.Dispose()}return ut(t)}function Fs(e){const n=new Map([]),t=[],r=a(e);try{for(;r["System.Collections.IEnumerator.MoveNext"]();){const e=r["System.Collections.Generic.IEnumerator`1.get_Current"]();if(13===e.tag){const r=e.fields[0],o=new Ar(r.Comments,r.HasDeclare,r.IsNamespace,r.Name,Fs(Hs(r.Types)),r.HelperLines,r.Attributes);if(n.has(r.Name)){const e=0|Li(n,r.Name),i=On(qr(t[e]));t[e]=new kr(13,new Ar(i.Comments,i.HasDeclare,i.IsNamespace,i.Name,Fs(Hs(ft(i.Types,o.Types))),i.HelperLines,i.Attributes))}else t.push(new kr(13,o)),Ai(n,o.Name,t.length-1)}else t.push(e)}}finally{r.Dispose()}return ut(t)}function Us(e){return new _r(e.Kind,e.FileName,e.ModuleName,St((e=>qr(e)),Fs(gt((e=>new kr(13,e)),ut(e.Modules)))))}$s.empty=Is(ro(),void 0);const Bs=oi(dt(["node","vscode"]),{Compare:(e,n)=>E(e,n)});function js(e,n){let t,r;mn(pn("createIExportsModule %A, %s"))(e)(n.Name);const o=[],i=[],s=[],l=[],c=[],d=new Oi([],{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)}),u=new Set([]);at((e=>{18===e.tag&&Ci(e.fields[0],u)}),n.Types),at((t=>{let r,c;switch(t.tag){case 13:{const o=js(""===n.Name?e:ft(e,(r=$n(n.Name,"'",""),c=ui(r),1===c.tag?Tt((e=>"."!==e),c.fields[0]):Qn(r))),t.fields[0]),i=a(o[1]);try{for(;i["System.Collections.IEnumerator.MoveNext"]();){const e=i["System.Collections.Generic.IEnumerator`1.get_Current"]();null!=e.Export?Ci(e,d):s.push(new kr(16,e))}}finally{i.Dispose()}l.push(new kr(13,o[0]));break}case 16:{const r=t.fields[0];if(r.HasDeclare)if(""===n.Name){const n=new kr(16,new vr(r.Attributes,r.Comments,new br(ti(Bs,xt(0,e)),0===function(...e){switch(e.length){case 2:return dn(e[0],e[1],!1);case 3:return dn(e[0],e[1],e[2]);case 4:return dn(e[0],e[1],!0===e[2]);case 5:return dn(e[0].substr(e[1],e[4]),e[2].substr(e[3],e[4]),!1);case 6:return dn(e[0].substr(e[1],e[4]),e[2].substr(e[3],e[4]),e[5]);case 7:return dn(e[0].substr(e[1],e[4]),e[2].substr(e[3],e[4]),!0===e[5]);default:throw new Error("String.compare: Unsupported number of parameters")}}(r.Name,xt(0,e),!0)?"*":r.Name,xt(0,e)),r.HasDeclare,r.Name,r.Type,r.IsConst,r.IsStatic,r.Accessibility));i.push(n)}else null!=(u=r).Export&&On(u.Export).IsGlobal?i.push(t):o.push(t);else o.push(t);break}case 8:o.push(t);break;case 0:{const e=t.fields[0];if(e.IsStatic){const n=new kr(2,new nr(Zn(),e.Comments,new Qt(0),void 0,$n(e.Name,"Static",""),!1,Gr(e.Name),new er(0),!1,void 0));o.push(n)}l.push(t);break}default:l.push(t)}var u}),n.Types);const p=ti(Bs,xt(0,e))?Ct(1,void 0,e):e,f=0===nt(p)?"*":$n(n.Name,"'",""),m=0===nt(p)?$n(n.Name,"'",""):En("/",p);if(o.length>0){const e=Eo((e=>to(e,0)),n.Name.split(""))?n.Name.toLocaleLowerCase():mi(n.Name);if(n.HasDeclare){if(!n.IsNamespace){const r=new vr(Zn(),n.Comments,new br(!1,"*",m),!0,e,Gr((t=xi(n.Name),hn(pn("%s.IExports"))(t))),!0,!1,void 0);c.push(r)}}else{const t=new vr(Zn(),n.Comments,new br(!1,f,m),!0,e,Gr((r=xi(n.Name),hn(pn("%s.IExports"))(r))),!0,!1,void 0);c.push(t)}}const h=0===o.length?Zn():Qn(new kr(0,new Ot(Zn(),Zn(),!1,!1,"IExports","IExports",Zn(),Zn(),ut(o),void 0))),g=ii(Io((e=>Jr(e)),i),{Compare:(e,n)=>E(e,n)});return at((e=>{let n;if(13===e.tag){const t=e.fields[0];!ti(g,t.Name)&&u.has(t.Name)&&Ci(new vr(Zn(),t.Comments,new br(!1,"*",m),!0,mi(t.Name),Gr((n=xi(t.Name),hn(pn("%s.IExports"))(n))),!0,!1,void 0),d)}}),n.Types),[new Ar(n.Comments,n.HasDeclare,n.IsNamespace,n.Name,ft(gt((e=>new kr(16,e)),ut(d)),ft(ut(i),ft(ut([]),ft(ut(s),ft(h,ut(l)))))),n.HelperLines,n.Attributes),ut(c)]}function Gs(e,n,t){if(0===nt(n))return t;{const r=oi(gt((e=>e.Name),St((e=>zr(e)),n)),{Compare:(e,n)=>E(e,n)});let o;const i=hn(pn("'%s"));return o=e=>i(e),Rs(e,((e,n)=>{let t,i;switch(7===n.tag&&ti(r,n.fields[0].Name)?(t=0,i=n.fields[0]):t=1,t){case 0:return new kr(7,new Sr(o(i.Name),i.FullName));case 1:{let e,t;switch(22===n.tag&&ti(r,n.fields[0].Name)?(e=0,t=n.fields[0]):e=1,e){case 0:return new kr(22,new Rt(o(t.Name),t.Constraint,t.Default));case 1:return n}}}}),t)}}function Ws(e){return Ms(((e,n)=>{if(13===n.tag){const e=n.fields[0],t=vt((e=>{let n;switch(n=10===e.tag&&"float"===e.fields[0].Name&&7===e.fields[0].Type.tag&&"float"===e.fields[0].Type.fields[0].Name&&"float"===e.fields[0].Type.fields[0].FullName?0:1,n){case 0:return!0;case 1:return!1}}),e.Types);return null==t?n:new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,bo(function(e,n,t){return mo((()=>{const r=new Oi(e,t);return xo((e=>Ci(e,r)),n)}))}([t],e.Types,{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)})),e.HelperLines,e.Attributes))}return n}),e)}const qs=function(e){const n=ro();return Is(n,ys(n,e))}(dt([["Array","type Array<'T> = System.Collections.Generic.IList<'T>"],["ReadonlyArray","type ReadonlyArray<'T> = System.Collections.Generic.IReadOnlyList<'T>"],["ReadonlySet","type ReadonlySet<'T> = Set<'T>"],["ReadonlyMap","type ReadonlyMap<'K, 'V> = Map<'K, 'V>"],["RegExp","type RegExp = System.Text.RegularExpressions.Regex"],["Error","type Error = System.Exception"],["Function","type Function = System.Action"],["Symbol","type Symbol = obj"],["TemplateStringsArray","type TemplateStringsArray = System.Collections.Generic.IReadOnlyList"],["ArrayLike","type ArrayLike<'T> = System.Collections.Generic.IList<'T>"],["PromiseLike","type PromiseLike<'T> = Fable.Core.JS.Promise<'T>"]]));function zs(e){const n=qi(St((e=>function(e){return 7===e.tag?e.fields[0]:void 0}(e)),Ps(e.Files)),{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)}),t=$t((e=>0===e.Name.indexOf("HTML")),n),r=function(e){return $t((e=>function(e){return 23===e.tag}(e)),Ps(e.Files))?new Nr(e.Namespace,e.Opens,e.Files,Xn("[] type KeyOf<'T> = Key of string",e.AbbrevTypes)):e}(new Nr(e.Namespace,e.Opens,e.Files,ft((o=qi(gt((e=>Ls(e.Name,qs)),Tt((e=>Os(e.Name,qs)),n)),{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)}),i={Compare:(e,n)=>E(e,n)},function(e,n){const t=ot(n);return t.sort(e),dt(t)}(((e,n)=>i.Compare(e,n)),o)),e.AbbrevTypes)));var o,i;return t?new Nr(r.Namespace,ft(r.Opens,Qn("Browser.Types")),gt((e=>Ms(((e,n)=>{if(13===n.tag){const e=n.fields[0];return new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,e.Types,gt((e=>$n(e,"Option.map","Microsoft.FSharp.Core.Option.map")),e.HelperLines),e.Attributes))}return n}),e)),r.Files),r.AbbrevTypes):r}const Ks=oi(dt(["string","float","bool","ReadonlySet","ReadonlyMap","Function"]),{Compare:(e,n)=>E(e,n)});function Vs(e){return Ms(((e,n)=>{if(0===n.tag){const e=n.fields[0],t=oi(gt((e=>e[0]),Tt((e=>nt(e[1])>1),bo(Io((e=>[e[0],bo(e[1])]),function(e,n,t){return mo((()=>{const r=new Hi([],t),o=[],i=a(n);try{for(;i["System.Collections.IEnumerator.MoveNext"]();){const n=i["System.Collections.Generic.IEnumerator`1.get_Current"](),t=e(n);let s,a=null;s=[ki(r,t,new P((()=>a),(e=>{a=e}))),a],s[0]?s[1].push(n):(Ai(r,t,[n]),o.push(t))}}finally{i.Dispose()}return Io((e=>[e,Li(r,e)]),o)}))}((e=>e.Name),Tt((e=>!T(e.Accessor,new er(2))),St((e=>function(e){return 2===e.tag?e.fields[0]:void 0}(e)),e.Members)),{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)}))))),{Compare:(e,n)=>E(e,n)});return null==ei(t)?new kr(0,e):new kr(0,new Ot(e.Attributes,e.Comments,e.IsStatic,e.IsClass,e.Name,e.FullName,e.TypeParameters,e.Inherits,St((e=>{if(2!==e.tag)return e;{const n=e.fields[0];if(!ri(n.Name,t))return new kr(2,n);switch(n.Accessor.tag){case 0:return new kr(2,new nr(n.Attributes,n.Comments,n.Kind,n.Index,n.Name,n.Option,n.Type,new er(2),n.IsStatic,n.Accessibility));case 1:default:return}}}),e.Members),e.Accessibility))}return n}),e)}function Js(e,n,t){return function(e,n,t,r,o=0){if("string"==typeof e){const t=e;e=tn(n,null!=r?r:0),n=t,r=void 0}if("function"==typeof t)return r=null==r?-1:r,n.substring(0,o)+n.substring(o).replace(e,(function(){let e=arguments[0];if(r){r--;const n=[],o=arguments.length,i="string"!=typeof arguments[o-1];let s=i?o-3:o-2;for(let e=0;e"$&")).replace(/\${([^}]+)}/g,"$<$1>"),null!=r){let i;const s=n.substring(o),a=sn(e,s),l=sn.length>r?(i=a[r-1],s.substring(0,i.index+i[0].length)):s;return n.substring(0,o)+l.replace(e,t)+n.substring(o+l.length)}return n.replace(e,t)}(e,t,(e=>n(e)))}function Ys(e){return e.indexOf("://")>=0}const Zs=tn("\\{\\@link (?[^ \\|\\}]+)(?:[ \\|](?[^\\}]*))?\\}");function Xs(e,n){if(null!=n){const t=n.groups&&n.groups[e];return null!=t?t||"":void 0}}function Qs(e,n){return Nn((e=>""===e?void 0:e),Xs(e,n))}function ea(e,n){return On(Xs(e,n))}function na(e,n){return Qs(e,n)}function ta(e){return Ys(e)?e:$n($n(0===e.indexOf("#")||0===e.indexOf("~")?Cn(e,1):e,"#","."),"~",".")}const ra=tn(hn(pn("(?%s)"))("`(?[^`]*)`")),oa=tn(En("|",[hn(pn("(?%s)"))("\\[(?[^\\)]*)\\]\\((?[^\\]]*)\\)"),hn(pn("(?%s)"))("\\{\\@link (?[^ \\|\\}]+)(?:[ \\|](?[^\\}]*))?\\}"),hn(pn("(?%s)"))("`(?[^`]*)`"),hn(pn("(?%s)"))("(?\\w+\\:\\/\\/\\S+)")]));function ia(e,n){const t=ta(e);let r;const o=Ys(t)?"h":"c";if(r=hn(pn('{if(null!=na("mdInlineCode",e)){const n=ea("mdInlineCode_code",e);return hn(pn("%s"))(n)}return e[0]}),n);return hn(pn("%s>%s"))(r)(e)}return hn(pn("%s />"))(r)}const sa=tn("^\\s*(?:\\{(?[^\\}]*)\\})(?.*)$"),aa=tn("^\\s*(?\\w+)\\s*(?:[-:])?\\s*(?.*)$"),la=tn("^\\s*((?\\{\\@link (?[^ \\|\\}]+)(?:[ \\|](?[^\\}]*))?\\})|(?\\[(?[^\\)]*)\\]\\((?[^\\]]*)\\))|(?[^\\s]+))\\s*(?.*)$");function ca(e){const n=on(la,e);if(null!=n){if(null!=na("jsDocLink",n)){const e=[Qs("jsDocLink_title",n),ea("jsDocLink_link",n)],t=Qs("description",n);return[ta(e[1]),e[0],t]}if(null!=na("mdLink",n)){const e=[ea("mdLink_title",n),ea("mdLink_link",n)],t=Qs("description",n);return[ta(e[1]),e[0],t]}{const e=na("path",n);if(null!=e){const t=e,r=Qs("description",n);return[ta(t),void 0,r]}return}}}function da(e){return $n($n($n(e,"&","&"),"<","<"),">",">")}function ua(e){return new Zr(0,void 0)}function pa(e){let n,t,r,o,i,s;switch(et(e)?o=1:0===kn(tt(e)).indexOf("```")?(o=0,i=tt(e),s=rt(e)):o=1,o){case 0:{let e;const o=yt((e=>0===kn(e).indexOf("```")),s);if(null!=o){const n=function(e,n){if(e<0)throw new Error(Bn+"\\nParameter name: index");if(e>Vn(n))throw new Error(jn+"\\nParameter name: index");return[kt(e,n),It(e,n)]}(o,s);e=[n[0],It(1,n[1])]}else e=[s,Zn()];const a=e[0];return[0===ua().tag?(t=Cn(kn(i),3).trim(),n=""===t?void 0:t,ft(Xn(null!=n?(r=n,hn(pn(''))(r)):"",a),Qn(""))):ft(Xn(i,a),Qn("```")),e[1]]}case 1:return}}function fa(e){const n=e=>((e,n)=>{e:for(;;){const r=e,o=n;if(et(o))return r;{const i=pa(o);if(null!=i){const t=i[0],o=i[1];e=ft(r,t),n=o;continue e}if(et(o))throw new Error("Match failure");e=ft(r,(t=tt(o),1===ua().tag?Qn(function(e){return mn(pn("Transforming line %s"))(e),Js(Zs,(e=>{const n=ea("jsDocLink_link",e),t=Qs("jsDocLink_title",e);if(null==t)return n;{const e=t;return hn(pn("[%s](%s)"))(e)(n)}}),e)}(t)):Qn(function(e){return Js(oa,(e=>{if(null!=na("mdLink",e)){const n=[ea("mdLink_title",e),ea("mdLink_link",e)];return ia(n[1],n[0])}if(null!=na("jsDocLink",e)){const n=[Qs("jsDocLink_title",e),ea("jsDocLink_link",e)];return ia(n[1],n[0])}if(null!=na("mdInlineCode",e)){const n=ea("mdInlineCode_code",e);return hn(pn("%s"))(n)}return null!=na("url",e)?ia(ea("url_link",e),void 0):e[0]}),e)}(t)))),n=rt(o);continue e}}var t})(Zn(),e);return gt((e=>{switch(e.tag){case 1:return new zt(1,new Bt(e.fields[0].Name,n(e.fields[0].Content)));case 2:return new zt(2,new Bt(e.fields[0].Name,n(e.fields[0].Content)));case 3:return new zt(3,n(e.fields[0]));case 4:return new zt(4,n(e.fields[0]));case 5:{const t=e.fields[0];return new zt(5,new Wt(t.Type,t.Target,n(e.fields[0].Content)))}case 6:return new zt(6,n(e.fields[0]));case 7:return new zt(7,new qt(e.fields[0].Type,n(e.fields[0].Content)));case 8:return new zt(8,n(e.fields[0]));case 9:return new zt(9,n(e.fields[0]));case 10:return new zt(10,new Bt(e.fields[0].Name,n(e.fields[0].Content)));case 11:case 12:return e;default:return new zt(0,n(e.fields[0]))}}),e)}function ma(e){if(0===ua().tag){const n=e=>gt((e=>da(e)),e);return gt((e=>{switch(e.tag){case 1:{const t=e.fields[0];return new zt(1,new Bt(t.Name,n(t.Content)))}case 2:{const t=e.fields[0];return new zt(2,new Bt(t.Name,n(t.Content)))}case 3:return new zt(3,n(e.fields[0]));case 4:return new zt(4,n(e.fields[0]));case 5:{const t=e.fields[0];return new zt(5,new Wt(t.Type,da(t.Target),n(t.Content)))}case 6:return new zt(6,n(e.fields[0]));case 7:{const t=e.fields[0];return new zt(7,new qt(Pn((e=>da(e)),t.Type),n(t.Content)))}case 8:return new zt(8,n(e.fields[0]));case 9:return new zt(9,n(e.fields[0]));case 10:{const t=e.fields[0];return new zt(10,new Bt(t.Name,n(t.Content)))}case 11:case 12:return e;default:return new zt(0,n(e.fields[0]))}}),e)}return e}function ha(e){const n=e=>{const n=function(e){const n=e=>{const n=function(e,n){for(;;){const t=e,r=n;if(Kn(r))return r;if(!t(Jn(r)))return r;e=t,n=Yn(r)}}((e=>Sn(e)),e);return et(n)?void 0:[tt(n),rt(n)]},t=(e,n)=>null==n?e:Xn(On(n),e);return St((e=>{let r,o,i,s,a,l,c,d,u,p,f,m,h,g;if(10===e.tag)"throws"===e.fields[0].Name?(d=0,u=e.fields[0].Content):"typeparam"===e.fields[0].Name?(d=1,p=e.fields[0].Content):"see"===e.fields[0].Name?(d=2,f=e.fields[0].Content):d=4;else if(1===e.tag){const t=n(e.fields[0].Content);null!=t?(d=3,m=t[0],h=t[1],g=e.fields[0]):d=4}else d=4;switch(d){case 0:{const e=n(u);if(null!=e){const n=e[0],i=e[1];return new zt(7,(r=function(e){const n=on(sa,e);return null!=n?[ea("type",n),Qs("description",n)]:void 0}(n),null==r?new qt(void 0,u):(o=r[1],new qt(r[0],t(i,o)))))}return}case 1:{const e=n(p);if(null!=e){const n=e[0],r=e[1],o=function(e){const n=on(aa,e);return null!=n?[ea("name",n),Qs("description",n)]:void 0}(n);if(null!=o){const e=o[1];return new zt(2,new Bt(o[0],t(r,e)))}return}return}case 2:{const e=n(f);if(null!=e){const n=e[0],t=e[1];console.log(Ln(ca(n)));const r=ca(n);if(null!=r){const e=r[1],n=r[0],o=r[2];return new zt(5,new Wt(Ys(n)?new Gt(0):new Gt(1),n,(i=[e,o],null==i[0]?null==i[1]?t:(s=i[1],Xn(s,t)):null==i[1]?(a=i[0],Xn(a,t)):(l=i[1],c=i[0],Xn(hn(pn("%s %s"))(c)(l),t)))))}return}return}case 3:if(0===m.indexOf("-")||0===m.indexOf(":")){const e=kn(Cn(m,1)),t=Sn(e)?null!=n(h)?h:void 0:Xn(e,h);return null==t?void 0:new zt(1,new Bt(g.Name,t))}return new zt(1,g);case 4:return e}}),e)}(function(e){const n=St((e=>function(e){return 0===e.tag?e.fields[0]:void 0}(e)),e);return et(n)?e:et(rt(n))?Xn(new zt(0,tt(n)),Tt((e=>!Fr(e)),e)):Xn(new zt(0,function(e,n){if(Kn(n))throw new Error("List was empty");return it(e,tt(n),rt(n))}(((e,n)=>ft(e,Xn("",n))),n)),Tt((e=>!Fr(e)),e))}(e));if(null==Ur(n))return fa(ma(n));{const e=fa(n),t=Ur(e);let r;switch(r=null!=t&&wt((e=>!Br(e)),t)?0:1,r){case 0:return e;case 1:return fa(ma(n))}}};return Ms(((e,t)=>{switch(t.tag){case 0:{const e=t.fields[0];return new kr(0,new Ot(e.Attributes,n(e.Comments),e.IsStatic,e.IsClass,e.Name,e.FullName,e.TypeParameters,e.Inherits,e.Members,e.Accessibility))}case 8:{const e=t.fields[0];return new kr(8,new Zt(e.Attributes,n(e.Comments),e.Kind,e.IsStatic,e.Name,e.TypeParameters,e.Params,e.ReturnType,e.Accessibility))}case 1:{const e=t.fields[0];return new kr(1,new Ft(e.Attributes,n(e.Comments),e.Name,gt((e=>new Ht(e.Attributes,n(e.Comments),e.Name,e.Type,e.Value)),e.Cases)))}case 2:{const e=t.fields[0];return new kr(2,new nr(e.Attributes,n(e.Comments),e.Kind,e.Index,e.Name,e.Option,e.Type,e.Accessor,e.IsStatic,e.Accessibility))}case 10:{const e=t.fields[0];return new kr(10,new ar(e.Attributes,n(e.Comments),e.Name,e.Type,e.TypeParameters))}case 16:{const e=t.fields[0];return new kr(16,new vr(e.Attributes,n(e.Comments),e.Export,e.HasDeclare,e.Name,e.Type,e.IsConst,e.IsStatic,e.Accessibility))}case 13:{const e=t.fields[0];return new kr(13,new Ar(n(e.Comments),e.HasDeclare,e.IsNamespace,e.Name,e.Types,e.HelperLines,e.Attributes))}default:return t}}),Ms(((e,n)=>function(e,n){const t=e=>function(e){let n;const t=e=>{let n;switch(n=10===e.tag&&"deprecated"===e.fields[0].Name?0:1,n){case 0:return!0;case 1:return!1}},r=Tt(t,e);var o;if(!et(r)){const i=Tt((e=>!t(e)),e),s=En("\n",gt((e=>$n(e,'"','\\"')),mt((e=>e),St((e=>{let n,t;switch(10===e.tag&&"deprecated"===e.fields[0].Name?(n=0,t=e.fields[0].Content):n=1,n){case 0:return t;case 1:return}}),r))));return[(n=new $r(void 0,"Obsolete",Zn()),new $r(n.Namespace,n.Name,Qn((o=hn(pn('"%s"'))(s),new wr(void 0,o))))),i]}}(e);let r,o,i,s;if(0===n.tag){const e=t(n.fields[0].Comments);null!=e?(r=0,o=e[0],i=e[1],s=n.fields[0]):r=1}else r=1;switch(r){case 0:return new kr(0,new Ot(Xn(Qn(o),s.Attributes),i,s.IsStatic,s.IsClass,s.Name,s.FullName,s.TypeParameters,s.Inherits,s.Members,s.Accessibility));case 1:{let e,r,o,i;if(8===n.tag){const s=t(n.fields[0].Comments);null!=s?(e=0,r=s[0],o=s[1],i=n.fields[0]):e=1}else e=1;switch(e){case 0:return new kr(8,new Zt(Xn(Qn(r),i.Attributes),o,i.Kind,i.IsStatic,i.Name,i.TypeParameters,i.Params,i.ReturnType,i.Accessibility));case 1:{let e,r,o,i;if(1===n.tag){const s=t(n.fields[0].Comments);null!=s?(e=0,r=s[0],o=s[1],i=n.fields[0]):e=1}else e=1;switch(e){case 0:return new kr(1,new Ft(Xn(Qn(r),i.Attributes),o,i.Name,gt((e=>{const n=t(e.Comments);if(null!=n){const t=n[0],r=n[1];return new Ht(Xn(Qn(t),e.Attributes),r,e.Name,e.Type,e.Value)}return e}),i.Cases)));case 1:{let e,r,o,i;if(2===n.tag){const s=t(n.fields[0].Comments);null!=s?(e=0,r=s[0],o=s[1],i=n.fields[0]):e=1}else e=1;switch(e){case 0:return new kr(2,new nr(Xn(Qn(r),i.Attributes),o,i.Kind,i.Index,i.Name,i.Option,i.Type,i.Accessor,i.IsStatic,i.Accessibility));case 1:{let e,r,o,i;if(10===n.tag){const s=t(n.fields[0].Comments);null!=s?(e=0,r=n.fields[0],o=s[0],i=s[1]):e=1}else e=1;switch(e){case 0:return new kr(10,new ar(Xn(Qn(o),r.Attributes),i,r.Name,r.Type,r.TypeParameters));case 1:{let e,r,o,i;if(16===n.tag){const s=t(n.fields[0].Comments);null!=s?(e=0,r=s[0],o=s[1],i=n.fields[0]):e=1}else e=1;switch(e){case 0:return new kr(16,new vr(Xn(Qn(r),i.Attributes),o,i.Export,i.HasDeclare,i.Name,i.Type,i.IsConst,i.IsStatic,i.Accessibility));case 1:{let e,r,o,i;if(13===n.tag){const s=t(n.fields[0].Comments);null!=s?(e=0,r=s[0],o=s[1],i=n.fields[0]):e=1}else e=1;switch(e){case 0:return new kr(13,new Ar(o,i.HasDeclare,i.IsNamespace,i.Name,i.Types,i.HelperLines,Xn(Qn(r),i.Attributes)));case 1:return n}}}}}}}}}}}}}}(0,n)),e))}function ga(e){if(null!=e){const n=e;return To((e=>118===e.kind),n)?new At(0):To((e=>117===e.kind),n)?new At(1):To((e=>116===e.kind),n)?new At(2):void 0}}function ba(e){return Ti(e.getText())}function va(e){const n=e;switch(0|n.kind){case 75:return e.getText();case 188:case 189:return;default:{const e=0|n.kind;return gn(pn("unknown Binding Name kind %A"))(e)}}}function ya(e,n){return null!=n?gt((n=>new kr(22,new Rt(n.name.getText(),Pn((n=>Oa(e,n)),n.constraint),Pn((n=>Oa(e,n)),n.default)))),ut(n)):Zn()}function xa(e,n){return null!=n?mt((n=>gt((n=>{const t=Oa(e,n);let r;const o=n.typeArguments;return r=null!=o?gt((n=>Oa(e,n)),ut(o)):Zn(),0===nt(r)?t:new kr(11,new rr(t,r))}),ut(n.types))),ut(n)):Zn()}function Ta(e){return dt($n($n(e,"\r\n","\n"),"\r","\n").split("\n"))}function Sa(e,n){return bo(mo((()=>{let t;return yo((t=function(e){if(0!==e.length){const n=mt((e=>Ta(e.text)),Tt((e=>"text"===e.kind),ut(e)));return et(n)?void 0:new zt(0,n)}}(e),null==t?mo((()=>new Array(0))):go(t)),mo((()=>function(e){return 0===e.length?Zn():gt((e=>function(e){const n=e=>{const t=0|e.kind;switch(t){case 75:return e.text;case 152:return(e=>{const t=e.right.text,r=n(e.left);return hn(pn("%s.%s"))(r)(t)})(e);default:return gn(pn("Invalid Syntaxkind: %A"))(t)}},t=e=>e.tagName.text.toLocaleLowerCase(),r=(e,n)=>n.kind===e?Ln(void 0):void 0,o=(e,n)=>{let o;switch(o=null!=r(304,n)&&Et(t(n),e,{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)})?0:1,o){case 0:return t(n);case 1:return}},i=_n(Pn((e=>Ta(e)),e.comment),Zn()),s=e=>new zt(10,new Bt(e,i));return null!=o(dt(["summary","description","desc"]),e)?new zt(0,i):null!=r(310,e)?new zt(1,new Bt(n(e.name),i)):null!=r(311,e)?new zt(3,i):null!=o(Qn("example"),e)?new zt(6,i):null!=o(dt(["remark","remarks","note"]),e)?new zt(4,i):null!=o(dt(["default","defaultvalue"]),e)?new zt(9,i):null!=o(Qn("version"),e)?new zt(8,i):null!=o(dt(["typeparam","tparam"]),e)?s("typeparam"):null!=o(Qn("see"),e)?s("see"):null!=o(dt(["throws","throw","exception"]),e)?s("throws"):null!=o(Qn("deprecated"),e)?s("deprecated"):null!=r(304,e)?new zt(11,new Bt(t(e),i)):new zt(12,i)}(e)),ut(e))}(n))))})))}function Ea(e,n){try{const t=e.getSignatureFromDeclaration(n);return null!=t?Sa(t.getDocumentationComment(e),wi.getJSDocTags(n)):Zn()}catch(e){return Zn()}}function wa(e,n){const t=e.getSymbolAtLocation(n);return null!=t?Sa(t.getDocumentationComment(e),wi.getJSDocTags(n.parent)):Zn()}function $a(e,n){return new Pt(gt((n=>Ra(e,n)),ut(n.members)))}function Ia(e,n){const t=e.getTypeFromTypeNode(n);return null!=t.symbol?e.getFullyQualifiedName(t.symbol):"error"}function ka(e,n){const t=e.getSymbolAtLocation(n);return null!=t?e.getFullyQualifiedName(t):""}function Ca(e,n){return null!=n&&To((n=>n.kind===e),n)}function Aa(e,n){let t,r;const o=n.typeArguments;if(null!=o){const i=o;return new kr(11,new rr((t=n.typeName.getText(),null==t&&(r=n.getText(),gn(pn("readTypeReference type name is null: %s"))(r)),new kr(7,new Sr(t,ka(e,n)))),gt((n=>Oa(e,n)),ut(i))))}return new kr(7,new Sr(n.getText(),ka(e,n)))}function La(e,n){return new Zt(Zn(),Zn(),new Yt(0),Ca(119,n.modifiers),Pn((e=>ba(e)),n.name),ya(e,n.typeParameters),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),Oa(e,n.type),ga(n.modifiers))}function Oa(e,n){e:for(;;){const t=e,r=n;switch(0|r.kind){case 99:return new kr(5);case 109:return Gr("unit");case 124:return new kr(9,new ir(!0,Qn(Gr("obj"))));case 127:return Gr("bool");case 136:return new kr(5);case 139:return Gr("float");case 140:return Gr("obj");case 142:return Gr("string");case 143:return Gr("Symbol");case 145:return Gr("obj");case 167:return Gr("bool");case 168:return Aa(t,r);case 169:return new kr(8,La(t,r));case 171:return Gr("obj");case 172:return new kr(21,$a(t,r));case 173:return new kr(4,Oa(t,r.elementType));case 174:return new kr(12,new dr(gt((e=>Oa(t,e)),ut(r.elementTypes)),new cr(1)));case 177:return _a(t,r);case 178:return new kr(12,new dr(gt((e=>Oa(t,e)),ut(r.types)),new cr(0)));case 181:e=t,n=r.type;continue e;case 182:return new kr(19);case 183:{const o=r;if(133===o.operator)return new kr(23,new xr(Oa(t,o.type)));e=t,n=o.type;continue e}case 184:e=t,n=r.objectType;continue e;case 185:return new kr(12,new dr(Qn(Gr("obj")),new cr(2)));case 186:{const e=r;return 10===e.literal.kind?new kr(17,Ti(e.literal.getText())):Gr("obj")}case 215:{const e=r;return new kr(7,new Sr(Da(e.expression),Ia(t,e)))}default:{const e=0|r.kind;return mn(pn("unsupported TypeNode kind: %A"))(e),new kr(5)}}break}}function _a(e,n){const t=ut(n.types),r=e=>145===e.kind||99===e.kind,o=e=>186===e.kind,i=$t(r,t),s=(e,n)=>new kr(1,new Ft(Zn(),Zn(),e,n)),a=(e,n)=>{let t,r,i;if(o(n)){const o=n;return T(o.literal.kind,e)?(t=o,r=Ti(t.literal.getText()),new Ht(Zn(),Zn(),r,(i=t.literal.kind,new Mt(8===i?0:10===i?1:2)),r)):void 0}},l=function(e,n){const t=[qn(),qn()],r=t[1],o=t[0],i=it(C(2,(n=>{const t=n[0],r=n[1];return n=>{let o,i;return e(n)?[(o=new Gn(n,void 0),t.tail=o,o),r]:[t,(i=new Gn(n,void 0),r.tail=i,i)]}})),[o,r],n),s=qn();i[0].tail=s;const a=qn();return i[1].tail=a,[Yn(o),Yn(r)]}(o,Tt((e=>!r(e)),t)),c=l[0],d=St(A(1,a,[10]),c),u=St(A(1,a,[8]),c),p=pt([gt((n=>Oa(e,n)),l[1]),et(d)?Zn():Qn(s("StringEnum",d)),et(u)?Zn():Qn(s("NumericEnum",u))]);let f;switch(f=et(p)?0:1===tt(p).tag&&et(rt(p))?1:2,f){case 0:return Gr("obj");case 1:return new kr(21,new Pt(p));case 2:return new kr(9,new ir(i,p))}}function Pa(e,n,t){const r=bt((e=>vt((e=>10===e.kind),ut(e.getChildren()))),ut(t.getChildren()));let o;if(null==r){const n=t.type;o=null==n?Gr("obj"):Oa(e,n)}else o=new kr(17,Ti(r.getText()));return new Vt(_n(va(t.name),"p"+p(n)),null!=t.questionToken,null!=t.dotDotDotToken,o)}function Na(e){return Ca(137,e)}function Ra(e,n){switch(0|n.kind){case 157:return new kr(2,function(e,n){let t;return new nr(Zn(),wa(e,n.name),new Qt(0),void 0,ba(n.name),null!=n.questionToken,(t=n.type,null!=t?Oa(e,t):new kr(6)),jr(Na(n.modifiers)),Ca(119,n.modifiers),ga(n.modifiers))}(e,n));case 158:return new kr(2,function(e,n){let t;return new nr(Zn(),wa(e,n.name),new Qt(0),void 0,ba(n.name),null!=n.questionToken,(t=n.type,null!=t?Oa(e,t):new kr(6)),jr(Na(n.modifiers)),Ca(119,n.modifiers),ga(n.modifiers))}(e,n));case 159:return new kr(8,function(e,n){let t;return new Zt(Zn(),Ea(e,n),new Yt(0),Ca(119,n.modifiers),ba(n.name),ya(e,n.typeParameters),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),(t=n.type,null==t?Gr("unit"):Oa(e,t)),ga(n.modifiers))}(e,n));case 160:return new kr(8,function(e,n){let t;return new Zt(Zn(),Ea(e,n),new Yt(0),Ca(119,n.modifiers),ba(n.name),ya(e,n.typeParameters),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),(t=n.type,null==t?Gr("unit"):Oa(e,t)),ga(n.modifiers))}(e,n));case 161:return new kr(8,function(e,n){return new Zt(Zn(),Ea(e,n),new Yt(1),!0,"Create",ya(e,n.typeParameters),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),new kr(19),ga(n.modifiers))}(e,n));case 162:return new kr(2,function(e,n){let t;return new nr(Zn(),wa(e,n.name),new Qt(0),void 0,ba(n.name),null!=n.questionToken,(t=n.type,null!=t?Oa(e,t):new kr(6)),new er(0),Ca(119,n.modifiers),ga(n.modifiers))}(e,n));case 163:return new kr(2,function(e,n){return new nr(Zn(),wa(e,n.name),new Qt(0),void 0,ba(n.name),null!=n.questionToken,1!==n.parameters.length?new kr(6):Pa(e,0,n.parameters[0]).Type,new er(1),Ca(119,n.modifiers),ga(n.modifiers))}(e,n));case 164:return new kr(8,function(e,n){let t;return new Zt(Zn(),Ea(e,n),new Yt(2),!1,"Invoke",Zn(),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),(t=n.type,null==t?Gr("unit"):Oa(e,t)),ga(n.modifiers))}(e,n));case 165:return new kr(8,function(e,n){return new Zt(Zn(),Ea(e,n),new Yt(1),!0,"Create",ya(e,n.typeParameters),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),new kr(19),ga(n.modifiers))}(e,n));case 166:return new kr(2,function(e,n){let t;const r=Pa(e,0,n.parameters[0]);return new nr(Zn(),Ea(e,n),new Qt(1),r,"Item",null!=n.questionToken,(t=n.type,null!=t?Oa(e,t):new kr(6)),jr(Na(n.modifiers)),Ca(119,n.modifiers),ga(n.modifiers))}(e,n));default:{const e=0|n.kind;return mn(pn("unsupported NamedDeclaration kind: %A"))(e),new kr(5)}}}function Da(e){switch(0|e.kind){case 75:case 193:return e.getText();default:{const n=0|e.kind;return mn(pn("readExpressionText kind not yet supported: %A"))(n),e.getText()}}}function Ma(e,n){switch(0|n.kind){case 224:return function(e,n){return gt((t=>new kr(16,new vr(Zn(),wa(e,t.name),void 0,!!Ca(129,n.modifiers)||Ca(88,n.modifiers),_n(va(t.name),"unsupported_pattern"),_n(Pn((n=>Oa(e,n)),t.type),Gr("obj")),0!=(2&(0|n.declarationList.flags)),Ca(119,t.modifiers),ga(n.modifiers)))),ut(n.declarationList.declarations))}(e,n);case 243:return Qn(new kr(8,function(e,n){let t;return new Zt(Zn(),Ea(e,n),new Yt(0),Ca(119,n.modifiers),Pn((e=>e.getText()),n.name),ya(e,n.typeParameters),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),(t=n.type,null==t?Gr("unit"):Oa(e,t)),ga(n.modifiers))}(e,n)));case 244:return Qn(new kr(0,function(e,n){const t=ka(e,n),r=_n(Pn((n=>wa(e,n)),n.name),Zn());let o;const i=n.name;o=null!=i?i.getText():t;const s=xa(e,n.heritageClauses),a=gt((n=>Ra(e,n)),ut(n.members));return new Ot(Zn(),r,!1,!0,o,t,ya(e,n.typeParameters),s,a,ga(n.modifiers))}(e,n)));case 245:return Qn(new kr(0,function(e,n){const t=wa(e,n.name),r=n.name.getText(),o=ka(e,n),i=xa(e,n.heritageClauses),s=gt((n=>Ra(e,n)),ut(n.members));return new Ot(Zn(),t,!1,!1,r,o,ya(e,n.typeParameters),i,s,ga(n.modifiers))}(e,n)));case 246:return Qn(function(e,n){const t=Oa(e,n.type),r=n.name.getText(),o=()=>new kr(10,new ar(Zn(),wa(e,n.name),r,t,ya(e,n.typeParameters)));if(9===t.tag){const i=t.fields[0],s=St((e=>Wr(e)),i.Types);return nt(i.Types)===nt(s)?new kr(1,new Ft(Zn(),wa(e,n.name),r,gt((e=>new Ht(Zn(),Zn(),e,new Mt(1),void 0)),s))):o()}return o()}(e,n));case 247:return Qn(new kr(1,function(e,n){return new Ft(Zn(),wa(e,n.name),n.name.getText(),gt((n=>function(e,n){let t;const r=ba(n.name);let o;const i=n.initializer;if(null!=i){const e=i;switch(0|e.kind){case 8:o=[new Mt(0),e.text];break;case 10:o=[new Mt(1),e.text];break;case 206:{const n=e.getText();o=(t=0,[Y(n,511,!1,32,new P((()=>t),(e=>{t=e}))),t])[0]?[new Mt(0),n]:[new Mt(2),void 0];break}default:{const n=0|e.kind;o=gn(pn("EnumCase type not supported %A %A"))(n)(r)}}}else o=[new Mt(2),void 0];return new Ht(Zn(),wa(e,n.name),r,o[0],o[1])}(e,n)),ut(n.members)))}(e,n)));case 248:return Qn(new kr(13,Ha(e,n)));case 251:case 252:return Zn();case 253:return function(e){const n=Ti(e.moduleSpecifier.getText()),t=e.importClause;if(null!=t){const e=t.namedBindings;if(null!=e){const t=On(e);return null!=t.name?Qn(new kr(20,new hr(1,new mr(t.name.getText(),n,void 0)))):mt((e=>317===e.kind?St((e=>{let t;if(257===e.kind){const r=e;return new kr(20,new hr(0,new fr((t=r.name.text,new pr(Pn((e=>e.text),r.propertyName),t)),n,void 0)))}}),ut(e.getChildren())):Zn()),ut(t.getChildren()))}return Zn()}return Zn()}(n);case 258:return Qn(75===(t=n).expression.kind?new kr(18,Da(t.expression)):new kr(6));case 259:return Zn();default:{const e=0|n.kind;return mn(pn("unsupported Statement kind: %A"))(e),Zn()}}var t}function Ha(e,n){const t=[];var r;return r=n=>{switch(0|n.kind){case 10:case 75:case 88:case 129:break;case 248:{const r=new kr(13,Ha(e,n));t.push(r);break}case 249:at((e=>{t.push(e)}),mt((n=>Ma(e,n)),ut(n.statements)));break;default:{const e=0|n.kind;mn(pn("unknown kind in ModuleDeclaration: %A"))(e)}}},n.forEachChild((e=>{r(e)})),new Ar(wa(e,n.name),Ca(129,n.modifiers),To((e=>135===e.kind),n.getChildren()),Ti(n.name.getText()),ut(t),Zn(),Zn())}class Fa extends _{constructor(e,n){super(),this.FileName=e,this.SourceFile=n}}class Ua extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Node","Web"]}}function Ba(e){if(1===e.tag)return Qn(e.fields[0].FileName);{const n=e.fields[0];return 0===nt(n.Exports)?n.TsPaths:function(e,n){const t=e.TsPaths;let r,o;switch(et(t)?r=1:et(rt(t))?(r=0,o=tt(t)):r=1,r){case 0:return n(o);case 1:throw new Error("tspaths 's length must be 1 when with --exports option")}}(n,(e=>Tt((e=>!!xn(e,".d.ts")&&function(e,n){return $t((n=>e.indexOf(n)>=0),n)}(e,n.Exports)),ut(n.EnumerateFilesInSameDir(e)))))}}function ja(e,n){return ha(Ws(function(e){const n=new c((()=>ot(_s(e))));return Ms(((e,t)=>{let r,o,i,s,a;switch(3===t.tag&&t.fields[0].Optional?(s=0,a=t.fields[0]):s=1,s){case 0:{const e=a.Type;let s,l,c;switch(9===e.tag?e.fields[0].Option?et(e.fields[0].Types)?e.fields[0].Option?(s=1,c=e.fields[0]):s=2:et(rt(e.fields[0].Types))?(s=0,l=tt(e.fields[0].Types)):e.fields[0].Option?(s=1,c=e.fields[0]):s=2:e.fields[0].Option?(s=1,c=e.fields[0]):s=2:s=2,s){case 0:return new kr(3,new Vt(a.Name,a.Optional,a.ParamArray,l));case 1:return new kr(3,new Vt(a.Name,a.Optional,a.ParamArray,new kr(9,new ir(!1,c.Types))));case 2:{let s,l,c;switch(11===e.tag&&7===e.fields[0].Type.tag&&""===e.fields[0].Type.fields[0].FullName?et(e.fields[0].TypeParameters)?s=1:et(rt(e.fields[0].TypeParameters))?(r=function(e,n){const t=fo(n);try{let n;for(;null==n&&t["System.Collections.IEnumerator.MoveNext"]();){const r=t["System.Collections.Generic.IEnumerator`1.get_Current"]();e(r)&&(n=Ln(r))}return n}finally{t.Dispose()}}((n=>{let t;switch(t=10===n.tag&&n.fields[0].Name===e.fields[0].Type.fields[0].Name?0:1,t){case 0:return!0;case 1:return!1}}),n.Value),null!=r&&10===r.tag&&9===r.fields[0].Type.tag&&r.fields[0].Type.fields[0].Option&&!et(r.fields[0].Type.fields[0].Types)&&7===tt(r.fields[0].Type.fields[0].Types).tag&&et(rt(r.fields[0].Type.fields[0].Types))&&!et(r.fields[0].TypeParameters)&&22===tt(r.fields[0].TypeParameters).tag&&et(rt(r.fields[0].TypeParameters))&&tt(r.fields[0].Type.fields[0].Types).fields[0].Name===tt(r.fields[0].TypeParameters).fields[0].Name&&(o=tt(r.fields[0].TypeParameters).fields[0],i=tt(r.fields[0].Type.fields[0].Types).fields[0],1)?(s=0,l=e.fields[0].Type.fields[0].Name,c=tt(e.fields[0].TypeParameters)):s=1):s=1:s=1,s){case 0:return new kr(3,new Vt(a.Name,a.Optional,a.ParamArray,c));case 1:return t}}}}case 1:return t}}),e)}(function(e){return Ms(((e,n)=>{let t,r,o,i,s;return 13===n.tag?new kr(13,(t=new Hi([],{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)}),r=new Map([]),i=n.fields[0],s=Ns("",(e=>13!==e.tag||!!T(e.fields[0],i)),((e,n)=>{if(21===n.tag){let o;const i=n.fields[0],s=e;let a,l=null;if(a=[ki(t,i,new P((()=>l),(e=>{l=e}))),l],a[0])o=a[1];else{let e,n;if(r.has(s)){r.set(s,Li(r,s)+1);const e=0|Li(r,s);n=hn(pn("%s%i"))(s)(e)}else r.set(s,1),n=s;const a=new Oi([],{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)});Rs(s,((e,n)=>{let t;switch(t=7===n.tag&&0===n.fields[0].Name.indexOf("'")?0:1,t){case 0:return Ci(n,a),n;case 1:return n}}),new kr(21,i)),e=new Ot(Zn(),Zn(),!1,!1,n,n,bo(a),Zn(),i.Members,void 0),t.set(i,e),o=e}const c=o.TypeParameters;return et(c)?Gr(o.Name):new kr(11,new rr(Gr(o.Name),c))}return n}),new kr(13,i)),o=13===s.tag?s.fields[0]:gn(pn("Impossible: %A"))(s),new Ar(o.Comments,o.HasDeclare,o.IsNamespace,o.Name,ft(o.Types,bo(Io((e=>new kr(0,e[1])),t))),o.HelperLines,o.Attributes))):n}),Ms(((e,n)=>{if(13===n.tag){const e=n.fields[0],t=new Set(gt((e=>Jr(e)),e.Types)),r=e=>{e:for(;;){const n=fi(e);if(t.has(n)){const r=hn(pn("%s_"))(n);if(t.has(r)){e=r;continue e}return Ci(r,t),r}return Ci(n,t),n}};return new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,mt((e=>{let n;switch(e.tag){case 0:{const n=e.fields[0],t=[],o=(e,n)=>{const r=new Ot(Zn(),Zn(),!1,!1,e,e,Zn(),Zn(),n,void 0);t.push(new kr(0,r))};return ft(Qn(new kr(0,new Ot(n.Attributes,n.Comments,n.IsStatic,n.IsClass,n.Name,n.FullName,n.TypeParameters,n.Inherits,gt((e=>{let t,i,s,a;if(8===e.tag){const l=e.fields[0];return new kr(8,new Zt(l.Attributes,l.Comments,l.Kind,l.IsStatic,l.Name,l.TypeParameters,gt((e=>{let t,i,s,a;const c=e.Type;if(21===c.tag){let d;const u="IExports"===n.Name?"":$n(n.Name,"`",""),p=$n(On(l.Name),"`",""),f=$n(e.Name,"`","");return d=r("Create"===p?(t=fi(f),hn(pn("%s%s"))(u)(t)):p===f?(i=fi(f),hn(pn("%s%s"))(u)(i)):(s=fi(f),a=fi(p),hn(pn("%s%s%s"))(u)(a)(s))),o(d,c.fields[0].Members),new Vt(e.Name,e.Optional,e.ParamArray,Gr(d))}return e}),l.Params),(t=l.ReturnType,21===t.tag?(s="IExports"===n.Name?"":$n(n.Name,"`",""),i=r((a=fi($n(On(l.Name),"`","")),hn(pn("%s%sReturn"))(s)(a))),o(i,t.fields[0].Members),Gr(i)):t),l.Accessibility))}return e}),n.Members),n.Accessibility))),ut(t))}case 10:{const t=e.fields[0],r=t.Type;switch(r.tag){case 9:{const e=r.fields[0];return Qn(new kr(10,new ar(t.Attributes,t.Comments,t.Name,new kr(9,new ir(e.Option,(n=[],at((e=>{21===e.tag?Fn(e.fields[0].Members,n):n.push(e)}),e.Types),ut(n)))),t.TypeParameters)))}case 21:return Qn(new kr(0,new Ot(Zn(),t.Comments,!1,!1,t.Name,t.Name,t.TypeParameters,Zn(),r.fields[0].Members,void 0)));default:return Qn(e)}}default:return Qn(e)}}),e.Types),e.HelperLines,e.Attributes))}return n}),e))}(function(e){return Ms(((e,n)=>{let t,r;switch(2===n.tag&&n.fields[0].Option?(t=0,r=n.fields[0]):t=1,t){case 0:{const e=r.Type;let t,o;switch(9===e.tag&&e.fields[0].Option?(t=0,o=e.fields[0]):t=1,t){case 0:return new kr(2,new nr(r.Attributes,r.Comments,r.Kind,r.Index,r.Name,r.Option,new kr(9,new ir(!1,o.Types)),r.Accessor,r.IsStatic,r.Accessibility));case 1:return n}}case 1:return n}}),e)}(function(e){return Ms(((e,n)=>{if(0===n.tag){const e=n.fields[0],t=new Oi([],{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)});return new kr(0,new Ot(e.Attributes,e.Comments,e.IsStatic,e.IsClass,e.Name,e.FullName,e.TypeParameters,e.Inherits,mt((e=>{if(8===e.tag){const n=e.fields[0];return Ci(new Zt(n.Attributes,Zn(),n.Kind,n.IsStatic,n.Name,n.TypeParameters,n.Params,new kr(6),n.Accessibility),t)?Qn(e):Zn()}return Qn(e)}),e.Members),e.Accessibility))}return n}),e)}(function(e){return Ms(((e,n)=>{if(0===n.tag){const e=n.fields[0];return new kr(0,new Ot(e.Attributes,e.Comments,e.IsStatic,e.IsClass,e.Name,e.FullName,e.IsStatic?Zn():e.TypeParameters,e.Inherits,e.Members,e.Accessibility))}return n}),e)}(function(e){return Ms(((e,n)=>{switch(n.tag){case 0:case 10:return Gs(e,n.fields[0].TypeParameters,n);default:return n}}),e)}(function(e){return Ms(((e,n)=>8===n.tag?Gs(e,n.fields[0].TypeParameters,n):n),e)}(function(e,n){return 1===e.tag?Ms(((e,n)=>{let r,o;switch(n.tag){case 7:{const e=n.fields[0];return new kr(7,new Sr(function(e){if(ti(Ei,e))return e;{const n=e.split(".");if(1===n.length)return e;{const e=st(dt(n));return En(".",st(gt((e=>xi(e)),ft(Qn(tt(e)),rt(e)))))}}}(e.Name),e.FullName))}case 20:{const e=n.fields[0];return new kr(20,0===e.tag?(r=e.fields[0],new hr(0,new fr(r.ImportSpecifier,1===t.Kind.tag?r.SpecifiedModule:xi(r.SpecifiedModule),r.ResolvedModule))):(o=e.fields[0],new hr(1,new mr(xi(o.Module),xi(o.SpecifiedModule),o.ResolvedModule))))}default:return n}}),t=n):e.fields[0].FixNamespace(n);var t}(e,function(e){return Ms(((e,n)=>{switch(n.tag){case 7:{const e=n.fields[0];return new kr(7,new Sr(yi(e.Name),e.FullName))}case 3:{const e=n.fields[0];return new kr(3,new Vt(yi(e.Name),e.Optional,e.ParamArray,e.Type))}case 8:{const e=n.fields[0];return new kr(8,new Zt(e.Attributes,e.Comments,e.Kind,e.IsStatic,Pn((e=>yi(e)),e.Name),e.TypeParameters,e.Params,e.ReturnType,e.Accessibility))}case 2:{const e=n.fields[0];return new kr(2,new nr(e.Attributes,e.Comments,e.Kind,e.Index,Tn(t=e.Name)?"":ti(si,t)||ti(ai,t)||!hi(t)?hn(pn("``%s``"))(t):t,e.Option,e.Type,e.Accessor,e.IsStatic,e.Accessibility))}case 0:{const e=n.fields[0];return new kr(0,new Ot(e.Attributes,e.Comments,e.IsStatic,e.IsClass,yi(e.Name),e.FullName,e.TypeParameters,e.Inherits,e.Members,e.Accessibility))}case 13:{const e=n.fields[0];return new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,xi(e.Name),e.Types,e.HelperLines,e.Attributes))}case 16:{const e=n.fields[0];return new kr(16,new vr(e.Attributes,e.Comments,e.Export,e.HasDeclare,yi(e.Name),e.Type,e.IsConst,e.IsStatic,e.Accessibility))}case 10:{const e=n.fields[0];return new kr(10,new ar(e.Attributes,e.Comments,yi(e.Name),e.Type,e.TypeParameters))}default:return n}var t}),e)}(function(e){return Ms(((e,n)=>{if(9===n.tag){const e=n.fields[0],t=new Oi([],{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)}),r=St((e=>t.has(e)?void 0:(Ci(e,t),e)),e.Types);return nt(r)>8?Gr("obj"):new kr(9,new ir(e.Option,r))}return n}),e)}(function(e){const n=[];Ms(((e,t)=>1===t.tag?(n.push(t.fields[0].Name),t):t),e);const t=ii(n,{Compare:(e,n)=>E(e,n)});return Ms(((e,n)=>{if(7===n.tag){const e=n.fields[0];if(e.Name.indexOf(".")>=0){const r=Cn(e.Name,0,e.Name.indexOf("."));return ti(t,r)?Gr(r):n}return n}return n}),e)}(function(e){return Ms(((e,n)=>{if(8===n.tag){const e=n.fields[0];if($t((e=>function(e){return 17===e.Type.tag}(e)),e.Params)){const n=[],t=[],r=[];let o;const i=On(e.Name);let s;o=hn(pn("$0.%s("))(i),n.push(o);const a=On(e.Name);s=hn(pn("%s"))(a),t.push(s);const l=new P(0);let c;lt(((o,i)=>{const s=Wr(i.Type);if(null!=s){const e=s;l.contents++;const r=hn(pn("'%s'"))(e);n.push(r);const o=hn(pn("_%s"))(e);t.push(o)}else{let e;const t=o+1-l.contents|0;e=hn(pn("$%d"))(t),n.push(e),r.push(i)}ojs(Qn(e.ModuleName),n)[0]),ut(e.Modules)))}(function(e){return Ms(((e,n)=>{if(13===n.tag){const e=n.fields[0];return new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,mt((e=>{if(0===e.tag){const t=e.fields[0];return $t((e=>Kr(e)),t.Members)?dt([new kr(0,new Ot(t.Attributes,t.Comments,t.IsStatic,t.IsClass,t.Name,t.FullName,t.TypeParameters,t.Inherits,(n=t,Tt((e=>!Kr(e)),n.Members)),t.Accessibility)),new kr(0,new Ot(t.Attributes,t.Comments,!0,t.IsClass,hn(pn("%sStatic"))(t.Name),t.FullName,t.TypeParameters,Zn(),Dr(t),t.Accessibility))]):Qn(e)}var n;return Qn(e)}),e.Types),e.HelperLines,e.Attributes))}return n}),e)}(function(e){return Ms(((e,n)=>{let t;if(7===n.tag){const e=n.fields[0];return new kr(7,new Sr((t=e.Name,"Date"===t?"DateTime":t),e.FullName))}return n}),e)}(function(e){return Ms(((e,n)=>8===n.tag?Rs(e,((e,n)=>{if(11===n.tag){const e=n.fields[0],t=e.Type;return 7===t.tag&&"ReadonlyArray"===t.fields[0].Name&&1===nt(e.TypeParameters)?new kr(4,xt(0,e.TypeParameters)):n}return n}),n):n),e)}(function(e){return Ms(((e,n)=>{if(11===n.tag){const e=n.fields[0],t=e.Type;return 7===t.tag&&"NodeArray"===t.fields[0].Name&&1===nt(e.TypeParameters)?new kr(4,xt(0,e.TypeParameters)):n}return n}),e)}(function(e){return Ms(((e,n)=>{if(0===n.tag){const t=n.fields[0];return new kr(0,new Ot(t.Attributes,t.Comments,t.IsStatic,t.IsClass,t.Name,t.FullName,t.TypeParameters,t.Inherits,gt((n=>Rs(e,((e,n)=>19===n.tag?new kr(11,new rr(Gr(t.Name),t.TypeParameters)):n),n)),t.Members),t.Accessibility))}return n}),e)}(function(e){return Ms(((e,n)=>{let t,r;switch(0===n.tag&&n.fields[0].IsClass?(t=0,r=n.fields[0]):t=1,t){case 0:return new kr(0,new Ot(r.Attributes,r.Comments,r.IsStatic,r.IsClass,r.Name,r.FullName,r.TypeParameters,r.Inherits,Tt((e=>!T(function(e){switch(e.tag){case 8:case 2:case 16:return e.fields[0].Accessibility;case 13:case 1:case 3:case 10:case 14:case 11:case 7:case 20:case 4:case 18:case 22:case 23:case 6:case 5:case 17:case 19:case 12:case 21:case 9:case 15:return;default:return e.fields[0].Accessibility}}(e),new At(2))),r.Members),r.Accessibility));case 1:return n}}),e)}(Vs(function(e){const n=[];Ms(((e,t)=>{if(0===t.tag){const e=t.fields[0];return e.IsClass&&Mr(e)?(n.push(e),t):t}return t}),e);const t=new Map(Io((e=>[e.FullName,e]),n));return Ms(((e,n)=>{if(0===n.tag){const e=n.fields[0];if(e.IsClass){if(Mr(e))return n;{const n=bt((e=>{const n=function(e){e:for(;;){const n=e;switch(n.tag){case 0:case 7:return n.fields[0].FullName;case 11:e=n.fields[0].Type;continue e;case 14:return n.fields[0].FileName;default:return Jr(n)}break}}(e);return t.has(n)?Li(t,n):void 0}),e.Inherits);return new kr(0,new Ot(e.Attributes,e.Comments,e.IsStatic,e.IsClass,e.Name,e.FullName,e.TypeParameters,e.Inherits,ft(null==n?Qn(new kr(8,new Zt(Zn(),Zn(),new Yt(1),!0,"Create",e.TypeParameters,Zn(),new kr(19),void 0))):Tt((e=>Vr(e)),n.Members),e.Members),e.Accessibility))}}return n}return n}),e)}(function(e){return new _r(e.Kind,e.FileName,e.ModuleName,gt((e=>{const n=[];return at((e=>{if(13===e.tag){const t=e.fields[0];"global"===t.Name?Fn(t.Types,n):n.push(e)}else n.push(e)}),e.Types),new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,ut(n),e.HelperLines,e.Attributes)}),e.Modules))}((t=function(e){const n=e=>{let t,r;switch(7===e.tag?t=0:11===e.tag?t=1:12===e.tag&&T(e.fields[0].Kind,new cr(0))?(t=2,r=e.fields[0]):t=3,t){case 0:case 1:return e;case 2:{const e=St(n,r.Types);return et(e)?void 0:new kr(12,new dr(e,r.Kind))}case 3:{let n;switch(n=12===e.tag&&T(e.fields[0].Kind,new cr(0))?0:1,n){case 0:return;case 1:return void e.tag}}}},t=e=>{let n;switch(n=7===e.tag&&ti(Ks,e.fields[0].Name)?0:1,n){case 0:return;case 1:{let n;switch(n=11===e.tag&&null==t(e.fields[0].Type)?0:1,n){case 0:return;case 1:{let n,r;switch(12===e.tag&&T(e.fields[0].Kind,new cr(0))?(n=0,r=e.fields[0]):n=1,n){case 0:{const e=St(t,r.Types);return et(e)?void 0:new kr(12,new dr(e,r.Kind))}case 1:return e}}}}}};return Ms(((e,r)=>{let o,i,s,a;switch(22===r.tag&&null!=r.fields[0].Constraint?(o=0,i=r.fields[0].Constraint,s=r.fields[0]):(o=1,a=r),o){case 0:return new kr(22,new Rt(s.Name,Nn(t,n(i)),s.Default));case 1:return a}}),e)}(function(e){let n;return Ms(((e,n)=>{let t,r;switch(22===n.tag&&null!=n.fields[0].Default?(t=0,r=n.fields[0]):t=1,t){case 0:return new kr(22,new Rt(r.Name,r.Constraint,void 0));case 1:return n}}),(n=(e,n,t,r)=>{const o=[];return lt(((i,s)=>{if(null!=s.Default){const s=new ar(e,n,t,new kr(11,new rr(Gr(t),ft(Ct(0,i-1,r),gt((e=>{let n,t;return n=e.Default,o=()=>Gr("obj"),null!=(r=null!=n?(t=n,12===t.tag?T(t.fields[0].Kind,new cr(0))||21===t.tag?void 0:t:21===t.tag?void 0:t):void 0)?On(r):o();var r,o}),St((e=>zr(e)),Ct(i,void 0,r)))))),Ct(0,i-1,r));o.push(s)}}),St((e=>zr(e)),r)),gt((e=>new kr(10,e)),ut(o))},Ms(((e,t)=>{let r;if(13===t.tag){const e=t.fields[0];return new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,(r=[],at((e=>{switch(e.tag){case 0:{const t=e.fields[0];Fn(n(t.Attributes,t.Comments,t.Name,t.TypeParameters),r),r.push(e);break}case 10:{const t=e.fields[0];Fn(n(t.Attributes,t.Comments,t.Name,t.TypeParameters),r),r.push(e);break}default:r.push(e)}}),e.Types),ut(r)),e.HelperLines,e.Attributes))}return t}),e)))}(function(e){const n=e=>{let n;const t=St((e=>zr(e)),e);n=it(C(2,(e=>{const n=e[0],t=e[1];return e=>{const r=e.Constraint;let o,i;switch(null!=r&&23===r.tag?(o=0,i=r.fields[0].Type):o=1,o){case 0:return[n,(s=e.Name,a=i,l=t,function(e,n,t){return Is(e.comparer,gs(e.comparer,n,t,e.tree))}(l,s,a))];case 1:return[Xn(e,n),t]}var s,a,l}})),[Zn(),$s.empty],t);const r=n[1];return null==r.tree?void 0:[gt((e=>new kr(22,e)),st(n[0])),r]},t=(e,n,t)=>Rs(e,((e,t)=>{let r,o;switch(7===t.tag&&Os(t.fields[0].Name,n)?(r=0,o=t.fields[0]):r=1,r){case 0:return new kr(23,new xr(Ls(o.Name,n)));case 1:return t}}),t);return Ms(((e,r)=>{switch(r.tag){case 8:{const o=r.fields[0],i=n(o.TypeParameters);if(null!=i){const n=i[0];return t(e,i[1],new kr(8,new Zt(o.Attributes,o.Comments,o.Kind,o.IsStatic,o.Name,n,o.Params,o.ReturnType,o.Accessibility)))}return r}case 0:{const o=r.fields[0],i=n(o.TypeParameters);if(null!=i){const n=i[0];return t(e,i[1],new kr(0,new Ot(o.Attributes,o.Comments,o.IsStatic,o.IsClass,o.Name,o.FullName,n,o.Inherits,o.Members,o.Accessibility)))}return r}case 10:{const o=r.fields[0],i=n(o.TypeParameters);if(null!=i){const n=i[0];return t(e,i[1],new kr(10,new ar(o.Attributes,o.Comments,o.Name,o.Type,n)))}return r}default:return r}}),e)}(function(e){const n=(e,n)=>{if(12!==n.tag)return n;switch(n.fields[0].Kind.tag){case 0:case 2:return Gr("obj");default:return n}},t=(e,r)=>{let o,i;switch(12===r.tag&&T(r.fields[0].Kind,new cr(0))?(o=0,i=r.fields[0]):o=1,o){case 0:return new kr(12,new dr(gt(A(1,t,[e]),i.Types),i.Kind));case 1:return Rs(e,n,r)}};return Ms(((e,r)=>{let o,i,s,a;switch(22===r.tag&&null!=r.fields[0].Constraint?(o=0,i=r.fields[0].Constraint,s=r.fields[0].Default,a=r.fields[0]):o=1,o){case 0:return new kr(22,new Rt(a.Name,t(e,i),Pn(A(1,n,[e]),s)));case 1:return r}}),Ds((e=>{let n;switch(n=22===e.tag&&null!=e.fields[0].Constraint?0:1,n){case 0:return!1;case 1:return!0}}),n,Ms(((e,n)=>{if(10!==n.tag)return n;{const e=n.fields[0],t=e.Type;let r;switch(r=12===t.tag&&T(t.fields[0].Kind,new cr(2))?0:1,r){case 0:return new kr(0,new Ot(Zn(),e.Comments,!1,!1,e.Name,e.Name,e.TypeParameters,Zn(),Zn(),void 0));case 1:return n}}}),Ms(((e,n)=>{if(10===n.tag){const e=n.fields[0],t=e.Type;return 12===t.tag&&0===t.fields[0].Kind.tag?new kr(0,new Ot(Zn(),e.Comments,!1,!1,e.Name,e.Name,e.TypeParameters,Zn(),Zn(),void 0)):n}return n}),Ms(((e,n)=>{if(10===n.tag){const e=n.fields[0],t=e.Type;if(8===t.tag){const n=t.fields[0];return new kr(0,new Ot(Zn(),e.Comments,!1,!1,e.Name,e.Name,e.TypeParameters,Zn(),Qn(new kr(8,new Zt(n.Attributes,e.Comments,new Yt(2),n.IsStatic,"Invoke",n.TypeParameters,n.Params,n.ReturnType,n.Accessibility))),void 0))}return n}return n}),e)))))}(Us(Ms(((e,n)=>{if(13===n.tag){const e=n.fields[0];return new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,mt((e=>{let n,t;switch(13===e.tag&&"internal"===e.fields[0].Name?(n=0,t=e.fields[0]):n=1,n){case 0:return t.Types;case 1:return Qn(e)}}),e.Types),e.HelperLines,e.Attributes))}return n}),n)))))),Ms(((e,n)=>{if(11===n.tag){const e=n.fields[0];return ri(Jr(n),li)?new kr(11,new rr(Gr("obj"),Zn())):new kr(11,new rr(e.Type,gt((e=>7===e.tag&&ti(li,e.fields[0].Name)?Gr("obj"):e),e.TypeParameters)))}return n}),t))))))))))))))))))))))))));var t}function Ga(e){const n=function(e){const n=(e,n)=>{const t={getSourceFile:e=>vt((n=>n.fileName===e),n),writeFile:e=>{},getDefaultLibFileName:e=>"lib.d.ts",useCaseSensitiveFileNames:()=>!1,getCanonicalFileName:e=>e,getCurrentDirectory:()=>"",getNewLine:()=>"\r\n",fileExists:n=>Et(n,e,{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)}),readFile:e=>"",directoryExists:e=>!0,getDirectories:e=>[]};return wi.createProgram(Array.from(e),{target:2,module:1},t)};if(1===e.tag){const t=e.fields[0];return n(Qn(t.FileName),Qn(t.SourceFile))}{const t=[Ba(e),e.fields[0].ReadText],r=t[0];return n(r,gt((e=>wi.createSourceFile(e,t[1](e),2,!0)),r))}}(e),t=1===(r=e).tag?"moduleName":r.fields[0].NameSpace;var r;const o=Ba(e),i=a(o);try{for(;i["System.Collections.IEnumerator.MoveNext"]();){const e=i["System.Collections.Generic.IEnumerator`1.get_Current"]();mn(pn("export %s"))(e)}}finally{i.Dispose()}const s=St((e=>e),gt((e=>n.getSourceFile(e)),o)),l=n.getTypeChecker(),c=new Map(Io((e=>[e.fileName,Si(e.fileName)]),n.getSourceFiles())),d=gt((n=>ja(e,function(e,n,t){let r,o;return new _r(t.Kind,t.FileName,t.ModuleName,Qn((r=mt((n=>Ma(e,n)),ut(n.statements)),o=t.Kind,1===o.tag?new Ar(Zn(),!0,!1,function(e){const n=di(e);return 1===ui(n).tag?hn(pn("./%s"))(n):n}(o.fields[0]),r,Zn(),Zn()):new Ar(Zn(),!1,!1,"",r,Zn(),Zn()))))}(l,n,new _r(function(e,n){if(1===n.tag)return new Or(0);{const t=n.fields[0];return t.GetFsFileKind([t,e])}}(n.fileName,e),n.fileName,Li(c,n.fileName),Zn())))),s);return zs(new Nr(yi(t),dt(["System","Fable.Core","Fable.Core.JS"]),d,Zn()))}class Wa extends Error{constructor(){super("The operation was canceled"),Object.setPrototypeOf(this,Wa.prototype)}}function qa(e){return n=>{if(n.cancelToken.isCancelled)n.onCancel(new Wa);else if(n.trampoline.incrementAndCheck())n.trampoline.hijack((()=>{try{e(n)}catch(e){n.onError(e)}}));else try{e(n)}catch(e){n.onError(e)}}}function za(e,n,t){at((t=>{try{t(n)}catch(n){e(n)}}),t)}function Ka(){return Zn()}function Va(e){return Qn((n=>{n(e)}))}new class{Bind(e,n){return function(e,n){return qa((t=>{e({onSuccess:e=>{try{n(e)(t)}catch(e){t.onError(e)}},onError:t.onError,onCancel:t.onCancel,cancelToken:t.cancelToken,trampoline:t.trampoline})}))}(e,n)}Combine(e,n){return this.Bind(e,(()=>n))}Delay(e){return qa((n=>e()(n)))}For(e,n){const t=e[Symbol.iterator]();let r=t.next();return this.While((()=>!r.done),this.Delay((()=>{const e=n(r.value);return r=t.next(),e})))}Return(e){return function(e){return qa((n=>n.onSuccess(e)))}(e)}ReturnFrom(e){return e}TryFinally(e,n){return qa((t=>{e({onSuccess:e=>{n(),t.onSuccess(e)},onError:e=>{n(),t.onError(e)},onCancel:e=>{n(),t.onCancel(e)},cancelToken:t.cancelToken,trampoline:t.trampoline})}))}TryWith(e,n){return qa((t=>{e({onSuccess:t.onSuccess,onCancel:t.onCancel,cancelToken:t.cancelToken,trampoline:t.trampoline,onError:e=>{try{n(e)(t)}catch(e){t.onError(e)}}})}))}Using(e,n){return this.TryFinally(n(e),(()=>e.Dispose()))}While(e,n){return e()?this.Bind(n,(()=>this.While(e,n))):this.Return(void 0)}Zero(){return qa((e=>e.onSuccess(void 0)))}},new class{constructor(e=!1){this._id=0,this._cancelled=e,this._listeners=new Map}get isCancelled(){return this._cancelled}cancel(){if(!this._cancelled){this._cancelled=!0;for(const[,e]of this._listeners)e()}}addListener(e){const n=this._id;return this._listeners.set(this._id++,e),n}removeListener(e){return this._listeners.delete(e)}register(e,n){const t=this,r=this.addListener(null==n?e:()=>e(n));return{Dispose(){t.removeListener(r)}}}};class Ja extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["DangerouslySetInnerHTML","OnCut","OnPaste","OnCompositionEnd","OnCompositionStart","OnCopy","OnCompositionUpdate","OnFocus","OnBlur","OnChange","OnInput","OnSubmit","OnReset","OnLoad","OnError","OnKeyDown","OnKeyPress","OnKeyUp","OnAbort","OnCanPlay","OnCanPlayThrough","OnDurationChange","OnEmptied","OnEncrypted","OnEnded","OnLoadedData","OnLoadedMetadata","OnLoadStart","OnPause","OnPlay","OnPlaying","OnProgress","OnRateChange","OnSeeked","OnSeeking","OnStalled","OnSuspend","OnTimeUpdate","OnVolumeChange","OnWaiting","OnClick","OnContextMenu","OnDoubleClick","OnDrag","OnDragEnd","OnDragEnter","OnDragExit","OnDragLeave","OnDragOver","OnDragStart","OnDrop","OnMouseDown","OnMouseEnter","OnMouseLeave","OnMouseMove","OnMouseOut","OnMouseOver","OnMouseUp","OnSelect","OnTouchCancel","OnTouchEnd","OnTouchMove","OnTouchStart","OnScroll","OnWheel","OnAnimationStart","OnAnimationEnd","OnAnimationIteration","OnTransitionEnd"]}}class Ya extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["DefaultChecked","DefaultValue","Accept","AcceptCharset","AccessKey","Action","AllowFullScreen","AllowTransparency","Alt","aria-atomic","aria-busy","aria-checked","aria-colcount","aria-colindex","aria-colspan","aria-controls","aria-current","aria-describedby","aria-details","aria-disabled","aria-errormessage","aria-expanded","aria-flowto","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-level","aria-live","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-owns","aria-placeholder","aria-posinset","aria-pressed","aria-readonly","aria-relevant","aria-required","aria-roledescription","aria-rowcount","aria-rowindex","aria-rowspan","aria-selected","aria-setsize","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext","Async","AutoComplete","AutoFocus","AutoPlay","Capture","CellPadding","CellSpacing","CharSet","Challenge","Checked","ClassID","ClassName","className","Cols","ColSpan","Content","ContentEditable","ContextMenu","Controls","Coords","CrossOrigin","data-toggle","DateTime","Default","Defer","Dir","Disabled","Download","Draggable","EncType","Form","FormAction","FormEncType","FormMethod","FormNoValidate","FormTarget","FrameBorder","Headers","Height","Hidden","High","Href","HrefLang","HtmlFor","HttpEquiv","Icon","Id","InputMode","Integrity","Is","KeyParams","KeyType","Kind","Label","Lang","List","Loop","Low","Manifest","MarginHeight","MarginWidth","Max","MaxLength","Media","MediaGroup","Method","Min","MinLength","Multiple","Muted","Name","NoValidate","Open","Optimum","Pattern","Placeholder","Poster","Preload","RadioGroup","ReadOnly","Rel","Required","Role","Rows","RowSpan","Sandbox","Scope","Scoped","Scrolling","Seamless","Selected","Shape","Size","Sizes","Span","SpellCheck","Src","SrcDoc","SrcLang","SrcSet","Start","Step","Summary","TabIndex","Target","Title","Type","UseMap","Value","value","Width","Wmode","Wrap","About","Datatype","Inlist","Prefix","Property","Resource","Typeof","Vocab","AutoCapitalize","AutoCorrect","AutoSave","ItemProp","ItemScope","ItemType","ItemID","ItemRef","Results","Security","Unselectable","Custom"]}}var Za=t(9526);function Xa(e){return K(n=e),n.cases()[n.tag];var n}class Qa extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["All","desktop","tablet","mobile","widescreen","touch","fullhd"]}}function el(e){switch(e.tag){case 1:case 2:case 3:case 4:case 5:case 6:return"-"+Xa(e);default:return""}}class nl extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["is-black","is-dark","is-light","is-white","is-primary","is-info","is-success","is-warning","is-danger","is-link","is-black-bis","is-black-ter","is-grey-darker","is-grey-dark","is-grey","is-grey-light","is-grey-lighter","is-white-ter","is-white-bis","IsCustomColor","NoColor"]}}function tl(e){switch(e.tag){case 19:return"is-"+e.fields[0];case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:return Xa(e);default:return""}}function rl(e){return p(function(e){return K(n=e),n.tag;var n}(e)+1)}class ol extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["has-text-centered","has-text-justified","has-text-left","has-text-right"]}}class il extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["BackgroundColor","TextColor","TextWeight","TextSize","TextSizeOnly","TextAlignment","TextAlignmentOnly","TextTransform","Display","DisplayOnly","is-clearfix","is-pulled-left","is-pulled-right","is-marginless","is-paddingless","is-overlay","is-clipped","is-radiusless","is-shadowless","is-unselectable","is-relative","IsInvisible","IsHidden","IsInvisibleOnly","IsHiddenOnly","IsSrOnly","IsScreenReaderOnly","Spacing"]}}class sl extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["CustomClass","Props","Modifiers"]}}class al extends _{constructor(e,n,t){super(),this.Props=e,this.Classes=n,this.RemovedClasses=t}}function ll(e,n,t,r){const o=it(n,new al(Zn(),Zn(),Zn()),e),i=null==t?o:ul(o,t);return null==r?i:dl(i,r)}function cl(e,n){return new al(Xn(n,e.Props),e.Classes,e.RemovedClasses)}function dl(e,n){return new al(ft(n,e.Props),e.Classes,e.RemovedClasses)}function ul(e,n){return new al(e.Props,Xn(n,e.Classes),e.RemovedClasses)}function pl(e,n){return ul(e,Xa(n))}function fl(e,n){return new al(e.Props,ft((t=n,it(((e,n)=>{let t,r;switch(n.tag){case 1:return Xn(function(e){switch(e.tag){case 19:return"has-text-"+e.fields[0];case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:return"has-text-"+Xa(e).slice(3,Xa(e).length);default:return""}}(n.fields[0]),e);case 2:return Xn(Xa(n.fields[0]),e);case 3:return Xn("is-size-"+rl(n.fields[1])+el(n.fields[0]),e);case 4:return Xn((t=n.fields[0],2===t.tag||1===t.tag||4===t.tag?"is-size-"+rl(n.fields[1])+el(t)+"-only":(console.warn(Ln("Screen `%s` does not support `is-size-xxx-only`."+L(t))),"")),e);case 5:return Xn(Xa(n.fields[1])+el(n.fields[0]),e);case 6:return Xn((r=n.fields[0],2===r.tag||1===r.tag||4===r.tag?Xa(n.fields[1])+el(r)+"-only":(console.warn(Ln("Screen `%s` does not support `is-size-xxx-only`."+L(r))),"")),e);case 7:return Xn(Xa(n.fields[0]),e);case 8:return Xn((s=n.fields[0],"is-"+Xa(n.fields[1])+el(s)),e);case 9:return Xn(function(e,n){switch(e.tag){case 2:case 1:case 4:return"is-"+Xa(n)+el(e)+"-only";default:return console.warn(Ln("Screen `%s` does not support display only."+L(e))),""}}(n.fields[0],n.fields[1]),e);case 21:return n.fields[1]?Xn(function(e){return"is-invisible"+el(e)}(n.fields[0]),e):e;case 23:return n.fields[1]?Xn(function(e){switch(e.tag){case 2:case 1:case 4:return"is-invisible"+el(e)+"-only";default:return console.warn(Ln("Screen `%s` does not support `is-invisible-xxx-only`."+L(e))),""}}(n.fields[0]),e):e;case 22:return n.fields[1]?Xn(function(e){return"is-hidden"+el(e)}(n.fields[0]),e):e;case 24:return n.fields[1]?Xn(function(e){switch(e.tag){case 2:case 1:case 4:return"is-hidden"+el(e)+"-only";default:return console.warn(Ln("Screen `%s` does not support `is-hidden-xxx-only`."+L(e))),""}}(n.fields[0]),e):e;case 25:case 26:return Xn("is-sr-only",e);case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:return Xn(Xa(n),e);case 27:return Xn((o=n.fields[0],i=n.fields[1],Xa(o)+"-"+Xa(i)),e);default:return Xn(function(e){switch(e.tag){case 19:return"has-background-"+e.fields[0];case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:return"has-background-"+Xa(e).slice(3,Xa(e).length);default:return""}}(n.fields[0]),e)}var o,i,s}),Zn(),t)),e.Classes),e.RemovedClasses);var t}function ml(e,n,t){const r=_n(t,Zn());return n(Xn(new Ya(64,En(" ",Tt((n=>!Et(n,e.RemovedClasses,{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)})),e.Classes))),e.Props),r)}function hl(e,n){switch(n.tag){case 0:return ul(e,n.fields[0]);case 2:return fl(e,n.fields[0]);default:return dl(e,n.fields[0])}}function gl(e,n){return ml(ll(e,((e,n)=>hl(e,n))),((e,n)=>Za.createElement("div",Ii(e,1),...n)),n)}class bl extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Color","has-shadow","is-transparent","is-fixed-top","is-fixed-bottom","is-spaced","Props","CustomClass","Modifiers"]}}class vl extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["is-tab","is-active","is-hoverable","has-dropdown","is-expanded","Props","CustomClass","Modifiers"]}}function yl(e,n,t){return ml(ll(n,((e,n)=>{switch(n.tag){case 4:case 0:case 2:case 3:return pl(e,n);case 5:return dl(e,n.fields[0]);case 6:return ul(e,n.fields[0]);case 7:return fl(e,n.fields[0]);default:return n.fields[0]?pl(e,n):e}}),"navbar-item"),e,t)}function xl(e,n){return yl(((e,n)=>Za.createElement("div",Ii(e,1),...n)),e,n)}function Tl(e,n){return yl(((e,n)=>Za.createElement("a",Ii(e,1),...n)),e,n)}function Sl(e,n){return t=(e,n)=>Za.createElement("a",Ii(e,1),...n),r=n,ml(ll(e,((e,n)=>{switch(n.tag){case 1:return pl(e,n);case 2:return dl(e,n.fields[0]);case 3:return ul(e,n.fields[0]);case 4:return fl(e,n.fields[0]);default:return n.fields[0]?pl(e,n):e}}),"navbar-link"),t,r);var t,r}function El(e,n){return t=(e,n)=>Za.createElement("div",Ii(e,1),...n),r=n,ml(ll(e,((e,n)=>{switch(n.tag){case 1:case 2:return pl(e,n);case 3:return dl(e,n.fields[0]);case 4:return ul(e,n.fields[0]);case 5:return fl(e,n.fields[0]);default:return n.fields[0]?pl(e,n):e}}),"navbar-dropdown"),t,r);var t,r}function wl(e,n){return t=(e,n)=>Za.createElement("div",Ii(e,1),...n),r=n,ml(ll(e,((e,n)=>hl(e,n)),"navbar-start"),t,r);var t,r}function $l(e,n){return t=(e,n)=>Za.createElement("div",Ii(e,1),...n),r=n,ml(ll(e,((e,n)=>hl(e,n)),"navbar-end"),t,r);var t,r}class Il extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Color","Size","is-fullwidth","is-link","is-outlined","is-inverted","is-text","is-rounded","is-expanded","is-hovered","is-focused","is-active","is-loading","is-static","is-light","Disabled","Props","OnClick","CustomClass","Modifiers"]}}function kl(e,n){return function(e,n,t){return ml(ll(n,((e,n)=>{let t,r;switch(n.tag){case 1:t=1;break;case 3:case 2:case 4:case 5:case 6:case 7:case 8:case 14:t=2;break;case 9:case 10:case 11:case 12:case 13:t=3,r=n.fields[0];break;case 15:t=4;break;case 17:t=5;break;case 16:t=6;break;case 18:t=7;break;case 19:t=8;break;default:t=0}switch(t){case 0:return ul(e,tl(n.fields[0]));case 1:return ul(e,Xa(n.fields[0]));case 2:return pl(e,n);case 3:return r?pl(e,n):e;case 4:return cl(e,new Ya(79,n.fields[0]));case 5:return cl(e,new Ja(40,n.fields[0]));case 6:return dl(e,n.fields[0]);case 7:return ul(e,n.fields[0]);case 8:return fl(e,n.fields[0])}}),"button"),e,t)}(((e,n)=>Za.createElement("a",Ii(e,1),...n)),e,n)}class Cl extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["is-active","Color","Props","CustomClass","Modifiers"]}}function Al(e){return Xa(e)}class Ll extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["is-centered","is-vcentered","is-multiline","is-gapless","is-grid","is-mobile","is-desktop","IsGap","IsGapOnly","CustomClass","Props","Modifiers"]}}function Ol(e,n){return ml(ll(e,((e,n)=>{let t,r,o,i,s,a,l,c,d,u,p,f;switch(n.tag){case 1:case 2:case 3:case 4:case 5:case 6:return pl(e,n);case 7:{const t=n.fields[1],r=n.fields[0];return Et("is-variable",e.Classes,{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)})?ul(e,Al(t)+el(r)):ul(ul(e,"is-variable"),Al(t)+el(r))}case 8:{const h=n.fields[1],g=n.fields[0];return Et("is-variable",e.Classes,{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)})?ul(e,(l=g,c=h,2===l.tag||1===l.tag||4===l.tag?Al(c)+el(l)+"-only":(d=l,console.warn(Ln((u=el(d),p=Al(c),f=el(d),hn(pn("Screen `%s` does not support `is-%s-%s-only`."))(f)(p)(u)))),""))):ul(ul(e,"is-variable"),(t=g,r=h,2===t.tag||1===t.tag||4===t.tag?Al(r)+el(t)+"-only":(o=t,console.warn(Ln((i=el(o),s=Al(r),a=el(o),hn(pn("Screen `%s` does not support `is-%s-%s-only`."))(a)(s)(i)))),"")))}case 10:return dl(e,n.fields[0]);case 9:return ul(e,n.fields[0]);case 11:return fl(e,n.fields[0]);default:return pl(e,n)}}),"columns"),((e,n)=>Za.createElement("div",Ii(e,1),...n)),n)}class _l extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["is-one-quarter","is-one-third","is-half","is-two-thirds","is-three-quarters","is-1","is-2","is-3","is-4","is-5","is-6","is-7","is-8","is-9","is-10","is-11","is-12","is-narrow","is-full","is-one-fifth","is-two-fifths","is-three-fifths","is-four-fifths"]}}class Pl extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Width","Offset","CustomClass","Props","Modifiers"]}}function Nl(e){switch(e.tag){case 1:return"-desktop";case 2:return"-tablet";case 3:return"-mobile";case 4:return"-widescreen";case 6:return"-fullhd";case 5:return"-touch";default:return""}}function Rl(e,n){return ml(ll(e,((e,n)=>{switch(n.tag){case 1:return ul(e,function(e,n){const t=Xa(n);return"is-offset-"+t.slice(3,t.length)+Nl(e)}(n.fields[0],n.fields[1]));case 2:return ul(e,n.fields[0]);case 3:return dl(e,n.fields[0]);case 4:return fl(e,n.fields[0]);default:return ul(e,(t=n.fields[0],Xa(n.fields[1])+Nl(t)))}var t}),"column"),((e,n)=>Za.createElement("div",Ii(e,1),...n)),n)}function Dl(e,n){return ml(ll(e,((e,n)=>{switch(n.tag){case 1:return ul(e,Xa(n.fields[0]));case 2:return dl(e,n.fields[0]);case 3:return ul(e,n.fields[0]);case 4:return fl(e,n.fields[0]);default:return ul(e,tl(n.fields[0]))}}),"message"),((e,n)=>Za.createElement("article",Ii(e,1),...n)),n)}function Ml(e,n){return ml(ll(e,((e,n)=>hl(e,n)),"message-body"),((e,n)=>Za.createElement("div",Ii(e,1),...n)),n)}var Hl=t(5849),Fl=t(2652),Ul=t.n(Fl),Bl=t(8596);function jl(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}class Gl extends Za.Component{constructor(e){super(e),jl(this,"editor",null),jl(this,"editorDidMount",((e,n)=>{this.props.editorDidMount(),this.editor=e})),jl(this,"onChange",((e,n)=>{this.props.onChange(e)})),jl(this,"onResize",(()=>{null!==this.editor&&this.editor.layout()}))}render(){const e={selectOnLineNumbers:!0,lineNumbers:!1,readOnly:this.props.isReadOnly,minimap:{enabled:!1}};return Za.createElement("div",{style:{height:"100%",overflow:"hidden"}},Za.createElement(Bl.Z,{handleWidth:!0,handleHeight:!0,onResize:this.onResize}),Za.createElement(Hl.ZP,{language:this.props.language,value:this.props.value,options:e,onChange:this.onChange,editorDidMount:this.editorDidMount,requireConfig:{url:"libs/requirejs/require.js",paths:{vs:"libs/vs"}}}))}}function Wl(){}Gl.propTypes={onChange:Ul().func,value:Ul().string,language:Ul().string,isReadOnly:Ul().bool,editorDidMount:Ul().func},Gl.defaultProps={onChange:Wl,value:"",language:"html",isReadOnly:!1,editorDidMount:Wl};const ql=Gl;class zl extends Za.Component{constructor(e){var n,t,r;super(e),r=()=>{this.state.showSuccess&&this.setState({showSuccess:!1})},(t="onMouseLeave")in(n=this)?Object.defineProperty(n,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[t]=r,this.state={showSuccess:!1}}componentDidMount(){const e=t(8294);this.clipboard=new e(this.element);const n=this;this.clipboard.on("success",(function(e){n.setState({showSuccess:!0})}))}render(){return Za.createElement("div",{className:"button is-success "+(this.state.showSuccess?"tooltip":""),"data-tooltip":"Code copied",ref:e=>{this.element=e},"data-clipboard-text":this.props.value,onMouseLeave:this.onMouseLeave},Za.createElement("span",{className:"icon"},Za.createElement("i",{className:"fa fa-copy"})),Za.createElement("span",null,"Copy to clipboard"))}}zl.propTypes={value:Ul().string},zl.defaultProps={value:""};const Kl=zl;class Vl extends _{constructor(e,n){super(),this.bound=0|e,this.digits=n}}function Jl(e,n){for(;;){const t=e,r=n;if(0===r)return 1;if(r%2!=0)return t*Jl(t*t,~~(r/2))|0;e=t*t,n=~~(r/2)}}function Yl(e){return e.bound}function Zl(e,n){return e.digits[n]}function Xl(e,n){return Ze(Zl(e,n),!1,2)}function Ql(e,n,t){e.digits[n]=0|t}function ec(e,n){for(;;){const t=e,r=n;if(0===r)return Je(1,0,!1);if(r%2!=0)return We(t,ec(We(t,t),~~(r/2)));e=We(t,t),n=~~(r/2)}}function nc(e,n){for(;;){const t=e,r=n;if(0===r)return 1;if(r%2!=0)return t*nc(t*t,~~(r/2))|0;e=t*t,n=~~(r/2)}}Je(2013265921,0,!1),Je(2013265921,0,!0),Mn(28,(e=>Jl(2,e)),Int32Array);const tc=16777216,rc=Je(16777216,0,!1),oc=Je(16777215,0,!1);function ic(e){return new Vl(e,new Int32Array(e))}function sc(e){const n=0|((e,n)=>{for(;;){const t=e,r=n;if(-1===r||0!==t[r])return r+1|0;e=t,n=r-1}})(e.digits,e.bound-1);return e.bound=0|n,e}function ac(e){const n=0|(e<0?0:e);if(n=0;t--)n=e.digits[t]+tc*n|0;return 0|n}}Je(16777215,0,!0);const cc=ac(1),dc=ac(0);function uc(e){return e.bound-1}function pc(e){return 0===e.bound}function fc(e,n){return-1===function(e,n){return e.boundn.bound?1:0|((e,n,t)=>{for(;;){const r=e,o=n,i=t;if(-1===i)return 0;if(r[i]!==o[i])return r[i]0))break;{const s=Ge(Xl(r,i),o);Ql(r,i,~~Ye(Ke(s,oc))),e=r,n=qe(s,rc),t=i+1}}}function hc(e,n){const t=0|Yl(e),r=ic(t+1),o=Ze(n,!1,2);let i=Je(0,0,!1);for(let n=0;n<=t-1;n++){const t=Ge(Ge(i,Xl(r,n)),We(Xl(e,n),o));Ql(r,n,~~Ye(Ke(t,oc))),i=qe(t,rc)}return mc(r,i,t),sc(r)}class gc extends _{constructor(e,n,t,r,o,i,s){super(),this.bigL=0|e,this.twoToBigL=0|n,this.k=0|t,this.bigK=0|r,this.bigN=0|o,this.split=0|i,this.splits=s}}function bc(e,n,t,r){return new gc(e,nc(2,e),n,t,r,~~(24/e),Mn(~~(24/e),(n=>nc(2,e*n)),Int32Array))}const vc=[bc(1,28,268435456,268435456),bc(2,26,67108864,134217728),bc(3,24,16777216,50331648),bc(4,22,4194304,16777216),bc(5,20,1048576,5242880),bc(6,18,262144,1572864),bc(7,16,65536,458752),bc(8,14,16384,131072),bc(9,12,4096,36864),bc(10,10,1024,10240),bc(11,8,256,2816),bc(12,6,64,768),bc(13,4,16,208)];function yc(e,n){return function(e,n){const t=1===Yl(e),r=1===Yl(n);return t&&r?function(e,n){const t=ic(2),r=We(Ze(e,!1,2),Ze(n,!1,2));return Ql(t,0,~~Ye(Ke(r,oc))),Ql(t,1,~~Ye(qe(r,rc))),sc(t)}(Zl(e,0),Zl(n,0)):t?hc(n,Zl(e,0)):r?hc(e,Zl(n,0)):function(e,n){const t=ic(e.bound+n.bound),r=t.digits;for(let o=0;o<=e.bound-1;o++){const i=Ze(e.digits[o],!1,2);let s=Je(0,0,!1),a=0|o;for(let e=0;e<=n.bound-1;e++){const t=Ze(n.digits[e],!1,2),o=Ge(Ge(Ze(r[a],!1,2),s),We(i,t));r[a]=0|~~Ye(Ke(o,oc)),s=qe(o,rc),a=a+1|0}mc(t,s,a)}return sc(t)}(e,n)}(e,n)}function xc(e,n,t,r){const o=[e.digits,uc(e)],i=o[0],s=[t.digits,uc(t)],a=0|s[1],l=s[0],c=Ze(n,!1,2);let d=0,u=We(c,Ze(l[0],!1,2));for(;Ve(u,Je(0,0,!1))>0||do[1])throw new Error("scaleSubInPlace: pre-condition did not apply, result would be -ve");let e=0|~~Ye(Ke(u,oc)),n=qe(u,rc);e<=i[d+r]?i[d+r]=i[d+r]-e|0:(i[d+r]=i[d+r]+(tc-e)|0,n=Ge(n,Je(1,0,!1))),u=d0||do[1])throw new Error("scaleSubInPlace: pre-condition did not apply, result would be -ve");let e=0|~~Ye(Ke(u,oc)),n=qe(u,rc);el.bound+a?1:0|((e,n,t)=>{e:for(;;){const r=e,o=n,i=t;if(-1===i)return 0;{const s=0|(i{};let l=!1;for(;!l;){a([r,t,s,o]);const e=0|Sc(t,n,s);e>0?(xc(t,e,n,s),Tc(r,e,cc,s),a([r,t,s,o])):(l=0===e&&0===s,l||(o===i+s?(a([r,t,s-1,o]),s=s-1|0):(a([r,t,s-1,o-1]),s=s-1|0,o=o-1|0)))}return[sc(r),sc(t)]}}function wc(e){return ac(e)}function $c(e){const n=0|uc(e),t=(e,n,r,o)=>{e:for(;;){const i=e,s=n,a=r,l=o;if(et(l)){const e=0|lc(a);return i&&0===e?s:Xn(p(e),s)}{const c=rt(l),d=Ec(a,tt(l)[1]),u=d[1],p=d[0];if(i&&pc(p)){e=i,n=s,r=u,o=c;continue e}e=i,n=t(!1,s,u,c),r=p,o=c;continue e}}},r=t(!0,Zn(),e,((e,t,r)=>{for(;;){const o=e,i=t,s=r;if(uc(s)>n)return Xn([i,s],o);e=Xn([i,s],o),t=i+1,r=yc(s,s)}})(Zn(),0,ac(10)));return et(r)?"0":En("",ot(r))}function Ic(e){const n=e;return 0nc(2,e)-1),Int32Array),Mn(24,(e=>nc(2,e)),Int32Array),Mn(24,(e=>ec(Je(2,0,!1),e))),vc[0].bigN,ac(2);var kc={GetHashCode(){return g([this.s,this.e].concat(this.c))},Equals(e){return!this.cmp(e)},CompareTo(e){return this.cmp(e)},[Z](){const e=this;return{multiply:n=>e.mul(n),toPrecision:n=>e.toPrecision(n),toExponential:n=>e.toExponential(n),toFixed:n=>e.toFixed(n),toHex:()=>(Number(e)>>>0).toString(16)}}},Cc=1e6,Ac="[big.js] ",Lc=Ac+"Invalid ",Oc=Lc+"decimal places",_c=Lc+"rounding mode",Pc=Ac+"Division by zero",Nc=void 0,Rc=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function Dc(e,n){var t,r,o;if(0===n&&1/n<0)n="-0";else if(!Rc.test(n+=""))throw Error(Lc+"number");for(e.s="-"==n.charAt(0)?(n=n.slice(1),-1):1,(t=n.indexOf("."))>-1&&(n=n.replace(".","")),(r=n.search(/e/i))>0?(t<0&&(t=r),t+=+n.slice(r+1),n=n.substring(0,r)):t<0&&(t=n.length),o=n.length,r=0;r=5;else if(2===t)r=o[i]>5||5==o[i]&&(r||i<0||o[i+1]!==Nc||1&o[i-1]);else if(3===t){const e=o.findIndex(((e,n)=>n>=i&&e>0))<0;r=r||!e}else if(r=!1,0!==t)throw Error(_c);if(i<1)o.length=1,r?(e.e=-n,o[0]=1):o[0]=e.e=0;else{if(o.length=i--,r)for(;++o[i]>9;)o[i]=0,i--||(++e.e,o.unshift(1));for(i=o.length;!o[--i];)o.pop()}}else if(t<0||t>3||t!==~~t)throw Error(_c);return e}function Hc(e,n,t,r){var o,i,s=e.constructor,a=!e.c[0];if(t!==Nc){if(t!==~~t||t<(3==n)||t>Cc)throw Error(3==n?Lc+"precision":Oc);for(t=r-(e=new s(e)).e,e.c.length>++r&&Mc(e,t,s.RM),2==n&&(r=e.e+t+1);e.c.length=s.PE))i=i.charAt(0)+(t>1?"."+i.slice(1):"")+(o<0?"e":"e+")+o;else if(o<0){for(;++o;)i="0"+i;i="0."+i}else if(o>0)if(++o>t)for(o-=t;o--;)i+="0";else o1&&(i=i.charAt(0)+"."+i.slice(1));return e.s<0&&(!a||4==n)?"-"+i:i}kc.abs=function(){var e=new this.constructor(this);return e.s=1,e},kc.cmp=function(e){var n,t=this.constructor,r=new t(this),o=(e=new t(e),r.c),i=e.c,s=r.s,a=e.s,l=r.e,c=e.e;if(!o[0]||!i[0])return o[0]?s:i[0]?-a:0;if(s!=a)return s;if(n=s<0,l!=c)return l>c^n?1:-1;for(a=Math.max(o.length,i.length),s=0;sc^n?1:-1;return 0},kc.div=function(e){var n=this.constructor,t=new n(this),r=(e=new n(e),t.c),o=e.c,i=t.s==e.s?1:-1,s=n.DP;if(s!==~~s||s<0||s>Cc)throw Error(Oc);if(!o[0])throw Error(Pc);if(!r[0])return new n(0*i);var a,l,c,d,u,p=o.slice(),f=a=o.length,m=r.length,h=r.slice(0,a),g=h.length,b=e,v=b.c=[],y=0,x=s+(b.e=t.e-e.e)+1;for(b.s=i,i=x<0?0:x,p.unshift(0);g++g?1:-1;else for(u=-1,d=0;++uh[u]?1:-1;break}if(!(d<0))break;for(l=g==a?o:p;g;){if(h[--g]x&&Mc(b,s,n.RM,h[0]!==Nc),b},kc.eq=function(e){return!this.cmp(e)},kc.gt=function(e){return this.cmp(e)>0},kc.gte=function(e){return this.cmp(e)>-1},kc.lt=function(e){return this.cmp(e)<0},kc.lte=function(e){return this.cmp(e)<1},kc.minus=kc.sub=function(e){var n,t,r,o,i=this.constructor,s=new i(this),a=(e=new i(e),s.s),l=e.s;if(a!=l)return e.s=-l,s.plus(e);var c=s.c.slice(),d=s.e,u=e.c,p=e.e;if(!c[0]||!u[0])return u[0]?(e.s=-l,e):new i(c[0]?s:0);if(a=d-p){for((o=a<0)?(a=-a,r=c):(p=d,r=u),r.reverse(),l=a;l--;)r.push(0);r.reverse()}else for(t=((o=c.length0)for(;l--;)c[n++]=0;for(l=n;t>a;){if(c[--t]0?(l=s,n=c):(o=-o,n=a),n.reverse();o--;)n.push(0);n.reverse()}for(a.length-c.length<0&&(n=c,c=a,a=n),o=c.length,i=0;o;a[o]%=10)i=(a[--o]=a[o]+c[o]+i)/10|0;for(i&&(a.unshift(i),++l),o=a.length;0===a[--o];)a.pop();return e.c=a,e.e=l,e},kc.pow=function(e){var n=this.constructor,t=new n(this),r=new n(1),o=new n(1),i=e<0;if(e!==~~e||e<-1e6||e>1e6)throw Error(Lc+"exponent");for(i&&(e=-e);1&e&&(r=r.times(t)),e>>=1;)t=t.times(t);return i?o.div(r):r},kc.round=function(e,n){var t=this.constructor;if(e===Nc)e=0;else if(e!==~~e||e<-Cc||e>Cc)throw Error(Oc);return Mc(new t(this),e,n===Nc?t.RM:n)},kc.sqrt=function(){var e,n,t,r=this.constructor,o=new r(this),i=o.s,s=o.e,a=new r(.5);if(!o.c[0])return new r(o);if(i<0)throw Error(Ac+"No square root");0===(i=Math.sqrt(o+""))||i===1/0?((n=o.c.join("")).length+s&1||(n+="0"),s=((s+1)/2|0)-(s<0||1&s),e=new r(((i=Math.sqrt(n))==1/0?"1e":(i=i.toExponential()).slice(0,i.indexOf("e")+1))+s)):e=new r(i),s=e.e+(r.DP+=4);do{t=e,e=a.times(t.plus(o.div(t)))}while(t.c.slice(0,s).join("")!==e.c.slice(0,s).join(""));return Mc(e,r.DP-=4,r.RM)},kc.times=kc.mul=function(e){var n,t=this.constructor,r=new t(this),o=(e=new t(e),r.c),i=e.c,s=o.length,a=i.length,l=r.e,c=e.e;if(e.s=r.s==e.s?1:-1,!o[0]||!i[0])return new t(0*e.s);for(e.e=l+c,sl;)a=n[c]+i[l]*o[c-l-1]+a,n[c--]=a%10,a=a/10|0;n[c]=(n[c]+a)%10}for(a?++e.e:n.shift(),l=n.length;!n[--l];)n.pop();return e.c=n,e},kc.toExponential=function(e){return Hc(this,1,e,e)},kc.toFixed=function(e){return Hc(this,2,e,this.e+e)},kc.toPrecision=function(e){return Hc(this,3,e,e-1)},kc.toString=function(){return Hc(this)},kc.valueOf=kc.toJSON=function(){return Hc(this,4)};var Fc=function e(){function n(t){var r=this;if(!(r instanceof n))return t===Nc?e():new n(t);t instanceof n?(r.s=t.s,r.e=t.e,r.c=t.c.slice(),function(e){if((e=Mc(e,28,0)).c.length>1&&!e.c[0]){let n=e.c.findIndex((e=>e));e.c=e.c.slice(n),e.e=e.e-n}}(r)):Dc(r,t),r.constructor=n}return n.prototype=kc,n.DP=28,n.RM=1,n.NE=-29,n.PE=29,n.version="5.2.2",n}();const Uc=Fc;new Uc(0),new Uc(1),new Uc(-1),new Uc("79228162514264337593543950335"),new Uc("-79228162514264337593543950335");class Bc extends _{constructor(e,n){super(),this.signInt=0|e,this.v=n}toString(){const e=this;switch(0|Wc(e)){case-1:return pc(qc(e))?"0":"-"+$c(qc(e));case 0:return"0";case 1:return $c(qc(e));default:throw new Error("signs should be +/- 1 or 0")}}Equals(e){return e instanceof Bc&&zc(this,e)}GetHashCode(){return 0|(0===Wc(this)?1:Wc(this)+function(e){let n=0;for(let t=0;t<=e.bound-1;t++)n=e.digits[t]+(n<<3)|0;return 0|n}(qc(this))|0)}CompareTo(e){if(e instanceof Bc)return 0|(function(e,n){const t=[Wc(e),Wc(n)];let r;switch(r=-1===t[0]?-1===t[1]?1:0===t[1]?8:1===t[1]?3:9:0===t[0]?-1===t[1]?6:0===t[1]?4:1===t[1]?5:9:1===t[0]?-1===t[1]?2:0===t[1]?7:1===t[1]?0:9:9,r){case 0:return fc(qc(e),qc(n));case 1:return fc(qc(n),qc(e));case 2:return!1;case 3:return!pc(qc(e))||!pc(qc(n));case 4:return!1;case 5:return!pc(qc(n));case 6:case 7:return!1;case 8:return!pc(qc(e));case 9:throw new Error("signs should be +/- 1 or 0\\nParameter name: x")}}(this,n=e)?-1:zc(this,n)?0:1);throw new Error("the objects are not comparable\\nParameter name: obj");var n}}function jc(e,n){return new Bc(e,n)}function Gc(e){return function(e){return e.bound<=1}(e)&&Ic(e){for(;;){const r=e,o=n,i=t;if(-1===i)return!0;if(r[i]!==o[i])return!1;e=r,n=o,t=i-1}})(o.digits,i.digits,o.bound-1);case 2:case 3:return!!pc(qc(e))&&pc(qc(n));case 4:return!0;case 5:case 6:return pc(qc(n));case 7:case 8:return pc(qc(e));case 9:throw new Error("signs should be +/- 1 or 0\\nParameter name: x")}var o,i}function Kc(e){return e>=0?jc(1,Gc(wc(e))):jc(-1,Gc(-2147483648===e?function(e){return function(e){const n=Ve(e,Je(0,0,!1))<0?Je(0,0,!1):e,t=ic(3);for(let e=0;e<=2;e++)t.digits[e]=0|~~Ye((r=qe(n,ec(rc,e)),o=rc,se(o)||(o=me(o)),oe?ue((r.unsigned?oe.rem_u:oe.rem_s)(r.low,r.high,o.low,o.high),oe.get_high(),r.unsigned):Ue(r,Be(je(r,o),o))));var r,o;return sc(t)}(e)}(ze(Ze(e,!1,2))):wc(-2147483648===(n=e)?n:-n)));var n}function Vc(){return Bc.one}function Jc(){return Bc.zero}function Yc(e,n,t,r,o){const i=function(e,n,t,r){const o=0|$(e,t);if(0===o)throw new Error("The step of a range cannot be zero");const i=o>0;return t=>{const o=0|$(t,n);return i&&o<=0||!i&&o>=0?[t,r(t,e)]:void 0}}(n,t,r,o);return mo((()=>{return n=i,t=e,po((()=>function(e,n){let t,r=n;return co((()=>null!=t?(t[1],t[0]):io()),(()=>{if(t=e(r),null!=t){t[0];const e=t[1];return r=e,!0}return!1}),(()=>{}))}(n,t)));var n,t}))}Bc.smallLim=4096,Bc.smallPosTab=Mn(Bc.smallLim,(e=>wc(e))),Bc.one=Kc(1),Bc.two=Kc(2),Bc.zero=Kc(0),Jc(),Vc(),Bc.two,Jc(),Vc();class Zc extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Writable","ReadWritable"]}}class Xc{constructor(e){this.state=new Zc(0,Dn(new Array(I(((e,n)=>E(e,n)),e,10)),0,I(((e,n)=>E(e,n)),e,10),null),0)}}function Qc(e){const n=e.state;if(1===n.tag){const t=0|n.fields[1],r=0|n.fields[2],o=n.fields[0],i=(r+1)%o.length|0;return e.state=i===t?new Zc(0,o,t):new Zc(1,o,t,i),Ln(o[r])}}function ed(e,n){const t=e.state;if(1===t.tag){const i=0|t.fields[1],s=0|t.fields[2],a=t.fields[0];a[i]=n;const l=(i+1)%a.length|0;e.state=l===s?new Zc(1,(r=s,o=a,Array.from(mo((()=>yo(ko(r,o),mo((()=>{return yo((e=r,n=o,t=()=>fo(n),i=(n,t)=>{if(n{e.Dispose()},po((()=>{let e=-1;return uo(t,(n=>(e=e+1|0,i(e,n))),s)}))),mo((()=>{return n=e=>go(null),e=o.length,t=Yc(0,1,e,0,((e,n)=>e+n)),mo((()=>ho(Io(n,t))));var e,n,t})));var e,n,t,i,s}))))))),a.length,0):new Zc(1,a,l,s)}else{const r=0|t.fields[1],o=t.fields[0];o[r]=n;const i=(r+1)%o.length|0;e.state=new Zc(1,o,i,r)}var r,o}class nd extends _{constructor(e,n,t,r,o,i,s){super(),this.init=e,this.update=n,this.subscribe=t,this.view=r,this.setState=o,this.onError=i,this.syncDispatch=s}}var td,rd=t(3961);class od extends _{constructor(e,n,t){super(),this.model=e,this.render=n,this.equal=t}}class id extends Za.Component{constructor(e){super(e)}shouldComponentUpdate(e,n){return!this.props.equal(this.props.model,e.model)}render(){return this.props.render()}}class sd extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Loading","Loaded"]}}class ad extends _{constructor(e,n,t,r){super(),this.HtmlCode=e,this.FSharpCode=n,this.HtmlEditorState=t,this.FSharpEditorState=r}}class ld extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["HtmlEditorLoaded","FSharpEditorLoaded","OnHtmlChange","UpdateFSharpCode"]}}function cd(e){return mn(pn("// Placeholder for ts2fable lib\n")),function(e){const n=[];let t=a(function(e,n){const t=[],r=hn(pn("// ts2fable %s"))("0.8.0");t.push(r);const o=hn(pn("module rec %s"))(n.Namespace);t.push(o);const i=a(n.Opens);try{for(;i["System.Collections.IEnumerator.MoveNext"]();){const e=i["System.Collections.Generic.IEnumerator`1.get_Current"](),n=hn(pn("open %s"))(e);t.push(n)}}finally{i.Dispose()}et(n.AbbrevTypes)||(t.push(""),at((e=>{t.push(e)}),n.AbbrevTypes)),t.push("");const s=a(n.Files);try{for(;s["System.Collections.IEnumerator.MoveNext"]();)at((e=>{ts(t,"",e)}),Tt((e=>nt(e.Types)>0),s["System.Collections.Generic.IEnumerator`1.get_Current"]().Modules))}finally{s.Dispose()}return t}(0,e));try{for(;t["System.Collections.IEnumerator.MoveNext"]();){const e=t["System.Collections.Generic.IEnumerator`1.get_Current"]();n.push(e)}}finally{t.Dispose()}return En("\n",n)}(function(e){const n="module.d.ts";return Ga(new Ua(1,new Fa(n,wi.createSourceFile(n,e,2,!0))))}(e))}function dd(e,n,t){return Tl(Qn(new vl(5,Qn(new Ja(40,(e=>{t(new ld(2,n))}))))),Qn(e))}function ud(e,n){const t=0===e.HtmlEditorState.tag&&0===e.FSharpEditorState.tag;return Za.createElement("div",{},function(e){return function(e,n){return ml(ll(e,((e,n)=>{switch(n.tag){case 3:case 4:case 2:case 5:return pl(e,n);case 0:return ul(e,tl(n.fields[0]));case 6:return dl(e,n.fields[0]);case 7:return ul(e,n.fields[0]);case 8:return fl(e,n.fields[0]);default:return pl(e,n)}}),"navbar"),((e,n)=>Za.createElement("nav",Ii(e,1),...n)),n)}(Qn(new bl(3)),dt([(o=Zn(),i=Qn(Tl(Zn(),Qn(Za.createElement("strong",{},"ts2fable")))),n=(e,n)=>Za.createElement("div",Ii(e,1),...n),t=o,r=i,ml(ll(t,((e,n)=>hl(e,n)),"navbar-brand"),n,r)),wl(Zn(),Qn(xl(dt([new vl(3),new vl(2)]),dt([Sl(Zn(),Qn("Samples")),El(Zn(),dt([dd("Monaco","/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Type definitions for monaco-editor v0.10.1\n * Released under the MIT license\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\ndeclare module monaco {\n\n interface Thenable {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => TResult | Thenable): Thenable;\n then(onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => void): Thenable;\n }\n\n export interface IDisposable {\n dispose(): void;\n }\n\n export interface IEvent {\n (listener: (e: T) => any, thisArg?: any): IDisposable;\n }\n\n /**\n * A helper that allows to emit and listen to typed events\n */\n export class Emitter {\n constructor();\n readonly event: IEvent;\n fire(event?: T): void;\n dispose(): void;\n }\n\n export enum Severity {\n Ignore = 0,\n Info = 1,\n Warning = 2,\n Error = 3,\n }\n\n\n\n /**\n * The value callback to complete a promise\n */\n export interface TValueCallback {\n (value: T | Thenable): void;\n }\n\n\n export interface ProgressCallback {\n (progress: any): any;\n }\n\n\n /**\n * A Promise implementation that supports progress and cancelation.\n */\n export class Promise {\n\n constructor(init: (complete: TValueCallback, error: (err: any) => void, progress: ProgressCallback) => void, oncancel?: any);\n\n public then(success?: (value: V) => Promise, error?: (err: any) => Promise, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise, error?: (err: any) => Promise | U, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise, error?: (err: any) => U, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise, error?: (err: any) => void, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise | U, error?: (err: any) => Promise, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise | U, error?: (err: any) => Promise | U, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise | U, error?: (err: any) => U, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise | U, error?: (err: any) => void, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => U, error?: (err: any) => Promise, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => U, error?: (err: any) => Promise | U, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => U, error?: (err: any) => U, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => U, error?: (err: any) => void, progress?: ProgressCallback): Promise;\n\n public done(success?: (value: V) => void, error?: (err: any) => any, progress?: ProgressCallback): void;\n public cancel(): void;\n\n public static as(value: null): Promise;\n public static as(value: undefined): Promise;\n public static as(value: Promise): Promise;\n public static as(value: Thenable): Thenable;\n public static as(value: ValueType): Promise;\n\n public static is(value: any): value is Thenable;\n public static timeout(delay: number): Promise;\n public static join(promises: Promise[]): Promise;\n public static join(promises: Thenable[]): Thenable;\n public static join(promises: { [n: string]: Promise }): Promise<{ [n: string]: ValueType }>;\n public static any(promises: Promise[]): Promise<{ key: string; value: Promise; }>;\n\n public static wrap(value: Thenable): Promise;\n public static wrap(value: ValueType): Promise;\n\n public static wrapError(error: Error): Promise;\n }\n\n export class CancellationTokenSource {\n readonly token: CancellationToken;\n cancel(): void;\n dispose(): void;\n }\n\n export interface CancellationToken {\n readonly isCancellationRequested: boolean;\n /**\n * An event emitted when cancellation is requested\n * @event\n */\n readonly onCancellationRequested: IEvent;\n }\n /**\n * Uniform Resource Identifier (Uri) http://tools.ietf.org/html/rfc3986.\n * This class is a simple parser which creates the basic component paths\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\n * and encoding.\n *\n * foo://example.com:8042/over/there?name=ferret#nose\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\n * | | | | |\n * scheme authority path query fragment\n * | _____________________|__\n * / \\ / \\\n * urn:example:animal:ferret:nose\n *\n *\n */\n export class Uri {\n static isUri(thing: any): thing is Uri;\n /**\n * scheme is the 'http' part of 'http://www.msft.com/some/path?query#fragment'.\n * The part before the first colon.\n */\n readonly scheme: string;\n /**\n * authority is the 'www.msft.com' part of 'http://www.msft.com/some/path?query#fragment'.\n * The part between the first double slashes and the next slash.\n */\n readonly authority: string;\n /**\n * path is the '/some/path' part of 'http://www.msft.com/some/path?query#fragment'.\n */\n readonly path: string;\n /**\n * query is the 'query' part of 'http://www.msft.com/some/path?query#fragment'.\n */\n readonly query: string;\n /**\n * fragment is the 'fragment' part of 'http://www.msft.com/some/path?query#fragment'.\n */\n readonly fragment: string;\n /**\n * Returns a string representing the corresponding file system path of this Uri.\n * Will handle UNC paths and normalize windows drive letters to lower-case. Also\n * uses the platform specific path separator. Will *not* validate the path for\n * invalid characters and semantics. Will *not* look at the scheme of this Uri.\n */\n readonly fsPath: string;\n with(change: {\n scheme?: string;\n authority?: string;\n path?: string;\n query?: string;\n fragment?: string;\n }): Uri;\n static parse(value: string): Uri;\n static file(path: string): Uri;\n static from(components: {\n scheme?: string;\n authority?: string;\n path?: string;\n query?: string;\n fragment?: string;\n }): Uri;\n /**\n *\n * @param skipEncoding Do not encode the result, default is `false`\n */\n toString(skipEncoding?: boolean): string;\n toJSON(): any;\n static revive(data: any): Uri;\n }\n\n /**\n * Virtual Key Codes, the value does not hold any inherent meaning.\n * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\n * But these are \"more general\", as they should work across browsers & OS`s.\n */\n export enum KeyCode {\n /**\n * Placed first to cover the 0 value of the enum.\n */\n Unknown = 0,\n Backspace = 1,\n Tab = 2,\n Enter = 3,\n Shift = 4,\n Ctrl = 5,\n Alt = 6,\n PauseBreak = 7,\n CapsLock = 8,\n Escape = 9,\n Space = 10,\n PageUp = 11,\n PageDown = 12,\n End = 13,\n Home = 14,\n LeftArrow = 15,\n UpArrow = 16,\n RightArrow = 17,\n DownArrow = 18,\n Insert = 19,\n Delete = 20,\n KEY_0 = 21,\n KEY_1 = 22,\n KEY_2 = 23,\n KEY_3 = 24,\n KEY_4 = 25,\n KEY_5 = 26,\n KEY_6 = 27,\n KEY_7 = 28,\n KEY_8 = 29,\n KEY_9 = 30,\n KEY_A = 31,\n KEY_B = 32,\n KEY_C = 33,\n KEY_D = 34,\n KEY_E = 35,\n KEY_F = 36,\n KEY_G = 37,\n KEY_H = 38,\n KEY_I = 39,\n KEY_J = 40,\n KEY_K = 41,\n KEY_L = 42,\n KEY_M = 43,\n KEY_N = 44,\n KEY_O = 45,\n KEY_P = 46,\n KEY_Q = 47,\n KEY_R = 48,\n KEY_S = 49,\n KEY_T = 50,\n KEY_U = 51,\n KEY_V = 52,\n KEY_W = 53,\n KEY_X = 54,\n KEY_Y = 55,\n KEY_Z = 56,\n Meta = 57,\n ContextMenu = 58,\n F1 = 59,\n F2 = 60,\n F3 = 61,\n F4 = 62,\n F5 = 63,\n F6 = 64,\n F7 = 65,\n F8 = 66,\n F9 = 67,\n F10 = 68,\n F11 = 69,\n F12 = 70,\n F13 = 71,\n F14 = 72,\n F15 = 73,\n F16 = 74,\n F17 = 75,\n F18 = 76,\n F19 = 77,\n NumLock = 78,\n ScrollLock = 79,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the ';:' key\n */\n US_SEMICOLON = 80,\n /**\n * For any country/region, the '+' key\n * For the US standard keyboard, the '=+' key\n */\n US_EQUAL = 81,\n /**\n * For any country/region, the ',' key\n * For the US standard keyboard, the ',<' key\n */\n US_COMMA = 82,\n /**\n * For any country/region, the '-' key\n * For the US standard keyboard, the '-_' key\n */\n US_MINUS = 83,\n /**\n * For any country/region, the '.' key\n * For the US standard keyboard, the '.>' key\n */\n US_DOT = 84,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '/?' key\n */\n US_SLASH = 85,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '`~' key\n */\n US_BACKTICK = 86,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '[{' key\n */\n US_OPEN_SQUARE_BRACKET = 87,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '\\|' key\n */\n US_BACKSLASH = 88,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the ']}' key\n */\n US_CLOSE_SQUARE_BRACKET = 89,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the ''\"' key\n */\n US_QUOTE = 90,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n */\n OEM_8 = 91,\n /**\n * Either the angle bracket key or the backslash key on the RT 102-key keyboard.\n */\n OEM_102 = 92,\n NUMPAD_0 = 93,\n NUMPAD_1 = 94,\n NUMPAD_2 = 95,\n NUMPAD_3 = 96,\n NUMPAD_4 = 97,\n NUMPAD_5 = 98,\n NUMPAD_6 = 99,\n NUMPAD_7 = 100,\n NUMPAD_8 = 101,\n NUMPAD_9 = 102,\n NUMPAD_MULTIPLY = 103,\n NUMPAD_ADD = 104,\n NUMPAD_SEPARATOR = 105,\n NUMPAD_SUBTRACT = 106,\n NUMPAD_DECIMAL = 107,\n NUMPAD_DIVIDE = 108,\n /**\n * Cover all key codes when IME is processing input.\n */\n KEY_IN_COMPOSITION = 109,\n ABNT_C1 = 110,\n ABNT_C2 = 111,\n /**\n * Placed last to cover the length of the enum.\n * Please do not depend on this value!\n */\n MAX_VALUE = 112,\n }\n\n export class KeyMod {\n static readonly CtrlCmd: number;\n static readonly Shift: number;\n static readonly Alt: number;\n static readonly WinCtrl: number;\n static chord(firstPart: number, secondPart: number): number;\n }\n /**\n * MarkedString can be used to render human readable text. It is either a markdown string\n * or a code-block that provides a language and a code snippet. Note that\n * markdown strings will be sanitized - that means html will be escaped.\n */\n export type MarkedString = string | {\n readonly language: string;\n readonly value: string;\n };\n\n export interface IKeyboardEvent {\n readonly browserEvent: KeyboardEvent;\n readonly target: HTMLElement;\n readonly ctrlKey: boolean;\n readonly shiftKey: boolean;\n readonly altKey: boolean;\n readonly metaKey: boolean;\n readonly keyCode: KeyCode;\n readonly code: string;\n equals(keybinding: number): boolean;\n preventDefault(): void;\n stopPropagation(): void;\n }\n export interface IMouseEvent {\n readonly browserEvent: MouseEvent;\n readonly leftButton: boolean;\n readonly middleButton: boolean;\n readonly rightButton: boolean;\n readonly target: HTMLElement;\n readonly detail: number;\n readonly posx: number;\n readonly posy: number;\n readonly ctrlKey: boolean;\n readonly shiftKey: boolean;\n readonly altKey: boolean;\n readonly metaKey: boolean;\n readonly timestamp: number;\n preventDefault(): void;\n stopPropagation(): void;\n }\n\n export interface IScrollEvent {\n readonly scrollTop: number;\n readonly scrollLeft: number;\n readonly scrollWidth: number;\n readonly scrollHeight: number;\n readonly scrollTopChanged: boolean;\n readonly scrollLeftChanged: boolean;\n readonly scrollWidthChanged: boolean;\n readonly scrollHeightChanged: boolean;\n }\n /**\n * A position in the editor. This interface is suitable for serialization.\n */\n export interface IPosition {\n /**\n * line number (starts at 1)\n */\n readonly lineNumber: number;\n /**\n * column (the first character in a line is between column 1 and column 2)\n */\n readonly column: number;\n }\n\n /**\n * A position in the editor.\n */\n export class Position {\n /**\n * line number (starts at 1)\n */\n readonly lineNumber: number;\n /**\n * column (the first character in a line is between column 1 and column 2)\n */\n readonly column: number;\n constructor(lineNumber: number, column: number);\n /**\n * Test if this position equals other position\n */\n equals(other: IPosition): boolean;\n /**\n * Test if position `a` equals position `b`\n */\n static equals(a: IPosition, b: IPosition): boolean;\n /**\n * Test if this position is before other position.\n * If the two positions are equal, the result will be false.\n */\n isBefore(other: IPosition): boolean;\n /**\n * Test if position `a` is before position `b`.\n * If the two positions are equal, the result will be false.\n */\n static isBefore(a: IPosition, b: IPosition): boolean;\n /**\n * Test if this position is before other position.\n * If the two positions are equal, the result will be true.\n */\n isBeforeOrEqual(other: IPosition): boolean;\n /**\n * Test if position `a` is before position `b`.\n * If the two positions are equal, the result will be true.\n */\n static isBeforeOrEqual(a: IPosition, b: IPosition): boolean;\n /**\n * A function that compares positions, useful for sorting\n */\n static compare(a: IPosition, b: IPosition): number;\n /**\n * Clone this position.\n */\n clone(): Position;\n /**\n * Convert to a human-readable representation.\n */\n toString(): string;\n /**\n * Create a `Position` from an `IPosition`.\n */\n static lift(pos: IPosition): Position;\n /**\n * Test if `obj` is an `IPosition`.\n */\n static isIPosition(obj: any): obj is IPosition;\n }\n\n /**\n * A range in the editor. This interface is suitable for serialization.\n */\n export interface IRange {\n /**\n * Line number on which the range starts (starts at 1).\n */\n readonly startLineNumber: number;\n /**\n * Column on which the range starts in line `startLineNumber` (starts at 1).\n */\n readonly startColumn: number;\n /**\n * Line number on which the range ends.\n */\n readonly endLineNumber: number;\n /**\n * Column on which the range ends in line `endLineNumber`.\n */\n readonly endColumn: number;\n }\n\n /**\n * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn)\n */\n export class Range {\n /**\n * Line number on which the range starts (starts at 1).\n */\n readonly startLineNumber: number;\n /**\n * Column on which the range starts in line `startLineNumber` (starts at 1).\n */\n readonly startColumn: number;\n /**\n * Line number on which the range ends.\n */\n readonly endLineNumber: number;\n /**\n * Column on which the range ends in line `endLineNumber`.\n */\n readonly endColumn: number;\n constructor(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number);\n /**\n * Test if this range is empty.\n */\n isEmpty(): boolean;\n /**\n * Test if `range` is empty.\n */\n static isEmpty(range: IRange): boolean;\n /**\n * Test if position is in this range. If the position is at the edges, will return true.\n */\n containsPosition(position: IPosition): boolean;\n /**\n * Test if `position` is in `range`. If the position is at the edges, will return true.\n */\n static containsPosition(range: IRange, position: IPosition): boolean;\n /**\n * Test if range is in this range. If the range is equal to this range, will return true.\n */\n containsRange(range: IRange): boolean;\n /**\n * Test if `otherRange` is in `range`. If the ranges are equal, will return true.\n */\n static containsRange(range: IRange, otherRange: IRange): boolean;\n /**\n * A reunion of the two ranges.\n * The smallest position will be used as the start point, and the largest one as the end point.\n */\n plusRange(range: IRange): Range;\n /**\n * A reunion of the two ranges.\n * The smallest position will be used as the start point, and the largest one as the end point.\n */\n static plusRange(a: IRange, b: IRange): Range;\n /**\n * A intersection of the two ranges.\n */\n intersectRanges(range: IRange): Range;\n /**\n * A intersection of the two ranges.\n */\n static intersectRanges(a: IRange, b: IRange): Range;\n /**\n * Test if this range equals other.\n */\n equalsRange(other: IRange): boolean;\n /**\n * Test if range `a` equals `b`.\n */\n static equalsRange(a: IRange, b: IRange): boolean;\n /**\n * Return the end position (which will be after or equal to the start position)\n */\n getEndPosition(): Position;\n /**\n * Return the start position (which will be before or equal to the end position)\n */\n getStartPosition(): Position;\n /**\n * Clone this range.\n */\n cloneRange(): Range;\n /**\n * Transform to a user presentable string representation.\n */\n toString(): string;\n /**\n * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.\n */\n setEndPosition(endLineNumber: number, endColumn: number): Range;\n /**\n * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.\n */\n setStartPosition(startLineNumber: number, startColumn: number): Range;\n /**\n * Create a new empty range using this range's start position.\n */\n collapseToStart(): Range;\n /**\n * Create a new empty range using this range's start position.\n */\n static collapseToStart(range: IRange): Range;\n static fromPositions(start: IPosition, end?: IPosition): Range;\n /**\n * Create a `Range` from an `IRange`.\n */\n static lift(range: IRange): Range;\n /**\n * Test if `obj` is an `IRange`.\n */\n static isIRange(obj: any): obj is IRange;\n /**\n * Test if the two ranges are touching in any way.\n */\n static areIntersectingOrTouching(a: IRange, b: IRange): boolean;\n /**\n * A function that compares ranges, useful for sorting ranges\n * It will first compare ranges on the startPosition and then on the endPosition\n */\n static compareRangesUsingStarts(a: IRange, b: IRange): number;\n /**\n * A function that compares ranges, useful for sorting ranges\n * It will first compare ranges on the endPosition and then on the startPosition\n */\n static compareRangesUsingEnds(a: IRange, b: IRange): number;\n /**\n * Test if the range spans multiple lines.\n */\n static spansMultipleLines(range: IRange): boolean;\n }\n\n /**\n * A selection in the editor.\n * The selection is a range that has an orientation.\n */\n export interface ISelection {\n /**\n * The line number on which the selection has started.\n */\n readonly selectionStartLineNumber: number;\n /**\n * The column on `selectionStartLineNumber` where the selection has started.\n */\n readonly selectionStartColumn: number;\n /**\n * The line number on which the selection has ended.\n */\n readonly positionLineNumber: number;\n /**\n * The column on `positionLineNumber` where the selection has ended.\n */\n readonly positionColumn: number;\n }\n\n /**\n * A selection in the editor.\n * The selection is a range that has an orientation.\n */\n export class Selection extends Range {\n /**\n * The line number on which the selection has started.\n */\n readonly selectionStartLineNumber: number;\n /**\n * The column on `selectionStartLineNumber` where the selection has started.\n */\n readonly selectionStartColumn: number;\n /**\n * The line number on which the selection has ended.\n */\n readonly positionLineNumber: number;\n /**\n * The column on `positionLineNumber` where the selection has ended.\n */\n readonly positionColumn: number;\n constructor(selectionStartLineNumber: number, selectionStartColumn: number, positionLineNumber: number, positionColumn: number);\n /**\n * Clone this selection.\n */\n clone(): Selection;\n /**\n * Transform to a human-readable representation.\n */\n toString(): string;\n /**\n * Test if equals other selection.\n */\n equalsSelection(other: ISelection): boolean;\n /**\n * Test if the two selections are equal.\n */\n static selectionsEqual(a: ISelection, b: ISelection): boolean;\n /**\n * Get directions (LTR or RTL).\n */\n getDirection(): SelectionDirection;\n /**\n * Create a new selection with a different `positionLineNumber` and `positionColumn`.\n */\n setEndPosition(endLineNumber: number, endColumn: number): Selection;\n /**\n * Get the position at `positionLineNumber` and `positionColumn`.\n */\n getPosition(): Position;\n /**\n * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`.\n */\n setStartPosition(startLineNumber: number, startColumn: number): Selection;\n /**\n * Create a `Selection` from one or two positions\n */\n static fromPositions(start: IPosition, end?: IPosition): Selection;\n /**\n * Create a `Selection` from an `ISelection`.\n */\n static liftSelection(sel: ISelection): Selection;\n /**\n * `a` equals `b`.\n */\n static selectionsArrEqual(a: ISelection[], b: ISelection[]): boolean;\n /**\n * Test if `obj` is an `ISelection`.\n */\n static isISelection(obj: any): obj is ISelection;\n /**\n * Create with a direction.\n */\n static createWithDirection(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, direction: SelectionDirection): Selection;\n }\n\n /**\n * The direction of a selection.\n */\n export enum SelectionDirection {\n /**\n * The selection starts above where it ends.\n */\n LTR = 0,\n /**\n * The selection starts below where it ends.\n */\n RTL = 1,\n }\n\n export class Token {\n _tokenBrand: void;\n readonly offset: number;\n readonly type: string;\n readonly language: string;\n constructor(offset: number, type: string, language: string);\n toString(): string;\n }\n}\n\ndeclare module monaco.editor {\n\n\n /**\n * Create a new editor under `domElement`.\n * `domElement` should be empty (not contain other dom nodes).\n * The editor will read the size of `domElement`.\n */\n export function create(domElement: HTMLElement, options?: IEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneCodeEditor;\n\n /**\n * Emitted when an editor is created.\n * Creating a diff editor might cause this listener to be invoked with the two editors.\n * @event\n */\n export function onDidCreateEditor(listener: (codeEditor: ICodeEditor) => void): IDisposable;\n\n /**\n * Create a new diff editor under `domElement`.\n * `domElement` should be empty (not contain other dom nodes).\n * The editor will read the size of `domElement`.\n */\n export function createDiffEditor(domElement: HTMLElement, options?: IDiffEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneDiffEditor;\n\n export interface IDiffNavigator {\n revealFirst: boolean;\n canNavigate(): boolean;\n next(): void;\n previous(): void;\n dispose(): void;\n }\n\n export interface IDiffNavigatorOptions {\n readonly followsCaret?: boolean;\n readonly ignoreCharChanges?: boolean;\n readonly alwaysRevealFirst?: boolean;\n }\n\n export function createDiffNavigator(diffEditor: IStandaloneDiffEditor, opts?: IDiffNavigatorOptions): IDiffNavigator;\n\n /**\n * Create a new editor model.\n * You can specify the language that should be set for this model or let the language be inferred from the `uri`.\n */\n export function createModel(value: string, language?: string, uri?: Uri): IModel;\n\n /**\n * Change the language for a model.\n */\n export function setModelLanguage(model: IModel, language: string): void;\n\n /**\n * Set the markers for a model.\n */\n export function setModelMarkers(model: IModel, owner: string, markers: IMarkerData[]): void;\n\n /**\n * Get markers for owner ant/or resource\n * @returns {IMarkerData[]} list of markers\n * @param filter\n */\n export function getModelMarkers(filter: {\n owner?: string;\n resource?: Uri;\n take?: number;\n }): IMarker[];\n\n /**\n * Get the model that has `uri` if it exists.\n */\n export function getModel(uri: Uri): IModel;\n\n /**\n * Get all the created models.\n */\n export function getModels(): IModel[];\n\n /**\n * Emitted when a model is created.\n * @event\n */\n export function onDidCreateModel(listener: (model: IModel) => void): IDisposable;\n\n /**\n * Emitted right before a model is disposed.\n * @event\n */\n export function onWillDisposeModel(listener: (model: IModel) => void): IDisposable;\n\n /**\n * Emitted when a different language is set to a model.\n * @event\n */\n export function onDidChangeModelLanguage(listener: (e: {\n readonly model: IModel;\n readonly oldLanguage: string;\n }) => void): IDisposable;\n\n /**\n * Create a new web worker that has model syncing capabilities built in.\n * Specify an AMD module to load that will `create` an object that will be proxied.\n */\n export function createWebWorker(opts: IWebWorkerOptions): MonacoWebWorker;\n\n /**\n * Colorize the contents of `domNode` using attribute `data-lang`.\n */\n export function colorizeElement(domNode: HTMLElement, options: IColorizerElementOptions): Promise;\n\n /**\n * Colorize `text` using language `languageId`.\n */\n export function colorize(text: string, languageId: string, options: IColorizerOptions): Promise;\n\n /**\n * Colorize a line in a model.\n */\n export function colorizeModelLine(model: IModel, lineNumber: number, tabSize?: number): string;\n\n /**\n * Tokenize `text` using language `languageId`\n */\n export function tokenize(text: string, languageId: string): Token[][];\n\n /**\n * Define a new theme.\n */\n export function defineTheme(themeName: string, themeData: IStandaloneThemeData): void;\n\n /**\n * Switches to a theme.\n */\n export function setTheme(themeName: string): void;\n\n export type BuiltinTheme = 'vs' | 'vs-dark' | 'hc-black';\n\n export interface IStandaloneThemeData {\n base: BuiltinTheme;\n inherit: boolean;\n rules: ITokenThemeRule[];\n colors: IColors;\n }\n\n export type IColors = {\n [colorId: string]: string;\n };\n\n export interface ITokenThemeRule {\n token: string;\n foreground?: string;\n background?: string;\n fontStyle?: string;\n }\n\n /**\n * A web worker that can provide a proxy to an arbitrary file.\n */\n export interface MonacoWebWorker {\n /**\n * Terminate the web worker, thus invalidating the returned proxy.\n */\n dispose(): void;\n /**\n * Get a proxy to the arbitrary loaded code.\n */\n getProxy(): Promise;\n /**\n * Synchronize (send) the models at `resources` to the web worker,\n * making them available in the monaco.worker.getMirrorModels().\n */\n withSyncedResources(resources: Uri[]): Promise;\n }\n\n export interface IWebWorkerOptions {\n /**\n * The AMD moduleId to load.\n * It should export a function `create` that should return the exported proxy.\n */\n moduleId: string;\n /**\n * The data to send over when calling create on the module.\n */\n createData?: any;\n /**\n * A label to be used to identify the web worker for debugging purposes.\n */\n label?: string;\n }\n\n /**\n * The options to create an editor.\n */\n export interface IEditorConstructionOptions extends IEditorOptions {\n /**\n * The initial model associated with this code editor.\n */\n model?: IModel;\n /**\n * The initial value of the auto created model in the editor.\n * To not create automatically a model, use `model: null`.\n */\n value?: string;\n /**\n * The initial language of the auto created model in the editor.\n * To not create automatically a model, use `model: null`.\n */\n language?: string;\n /**\n * Initial theme to be used for rendering.\n * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black'.\n * You can create custom themes via `monaco.editor.defineTheme`.\n * To switch a theme, use `monaco.editor.setTheme`\n */\n theme?: string;\n /**\n * An URL to open when Ctrl+H (Windows and Linux) or Cmd+H (OSX) is pressed in\n * the accessibility help dialog in the editor.\n *\n * Defaults to \"https://go.microsoft.com/fwlink/?linkid=852450\"\n */\n accessibilityHelpUrl?: string;\n }\n\n /**\n * The options to create a diff editor.\n */\n export interface IDiffEditorConstructionOptions extends IDiffEditorOptions {\n /**\n * Initial theme to be used for rendering.\n * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black'.\n * You can create custom themes via `monaco.editor.defineTheme`.\n * To switch a theme, use `monaco.editor.setTheme`\n */\n theme?: string;\n }\n\n export interface IStandaloneCodeEditor extends ICodeEditor {\n addCommand(keybinding: number, handler: ICommandHandler, context: string): string;\n createContextKey(key: string, defaultValue: T): IContextKey;\n addAction(descriptor: IActionDescriptor): IDisposable;\n }\n\n export interface IStandaloneDiffEditor extends IDiffEditor {\n addCommand(keybinding: number, handler: ICommandHandler, context: string): string;\n createContextKey(key: string, defaultValue: T): IContextKey;\n addAction(descriptor: IActionDescriptor): IDisposable;\n getOriginalEditor(): IStandaloneCodeEditor;\n getModifiedEditor(): IStandaloneCodeEditor;\n }\n export interface ICommandHandler {\n (...args: any[]): void;\n }\n\n export interface IContextKey {\n set(value: T): void;\n reset(): void;\n get(): T;\n }\n\n export interface IEditorOverrideServices {\n [index: string]: any;\n }\n\n export interface IMarker {\n owner: string;\n resource: Uri;\n severity: Severity;\n code?: string;\n message: string;\n source?: string;\n startLineNumber: number;\n startColumn: number;\n endLineNumber: number;\n endColumn: number;\n }\n\n /**\n * A structure defining a problem/warning/etc.\n */\n export interface IMarkerData {\n code?: string;\n severity: Severity;\n message: string;\n source?: string;\n startLineNumber: number;\n startColumn: number;\n endLineNumber: number;\n endColumn: number;\n }\n\n export interface IColorizerOptions {\n tabSize?: number;\n }\n\n export interface IColorizerElementOptions extends IColorizerOptions {\n theme?: string;\n mimeType?: string;\n }\n\n export enum ScrollbarVisibility {\n Auto = 1,\n Hidden = 2,\n Visible = 3,\n }\n\n export interface ThemeColor {\n id: string;\n }\n\n /**\n * Vertical Lane in the overview ruler of the editor.\n */\n export enum OverviewRulerLane {\n Left = 1,\n Center = 2,\n Right = 4,\n Full = 7,\n }\n\n /**\n * Options for rendering a model decoration in the overview ruler.\n */\n export interface IModelDecorationOverviewRulerOptions {\n /**\n * CSS color to render in the overview ruler.\n * e.g.: rgba(100, 100, 100, 0.5) or a color from the color registry\n */\n color: string | ThemeColor;\n /**\n * CSS color to render in the overview ruler.\n * e.g.: rgba(100, 100, 100, 0.5) or a color from the color registry\n */\n darkColor: string | ThemeColor;\n /**\n * CSS color to render in the overview ruler.\n * e.g.: rgba(100, 100, 100, 0.5) or a color from the color registry\n */\n hcColor?: string | ThemeColor;\n /**\n * The position in the overview ruler.\n */\n position: OverviewRulerLane;\n }\n\n /**\n * Options for a model decoration.\n */\n export interface IModelDecorationOptions {\n /**\n * Customize the growing behavior of the decoration when typing at the edges of the decoration.\n * Defaults to TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges\n */\n stickiness?: TrackedRangeStickiness;\n /**\n * CSS class name describing the decoration.\n */\n className?: string;\n /**\n * Message to be rendered when hovering over the glyph margin decoration.\n */\n glyphMarginHoverMessage?: MarkedString | MarkedString[];\n /**\n * Array of MarkedString to render as the decoration message.\n */\n hoverMessage?: MarkedString | MarkedString[];\n /**\n * Should the decoration expand to encompass a whole line.\n */\n isWholeLine?: boolean;\n /**\n * If set, render this decoration in the overview ruler.\n */\n overviewRuler?: IModelDecorationOverviewRulerOptions;\n /**\n * If set, the decoration will be rendered in the glyph margin with this CSS class name.\n */\n glyphMarginClassName?: string;\n /**\n * If set, the decoration will be rendered in the lines decorations with this CSS class name.\n */\n linesDecorationsClassName?: string;\n /**\n * If set, the decoration will be rendered in the margin (covering its full width) with this CSS class name.\n */\n marginClassName?: string;\n /**\n * If set, the decoration will be rendered inline with the text with this CSS class name.\n * Please use this only for CSS rules that must impact the text. For example, use `className`\n * to have a background color decoration.\n */\n inlineClassName?: string;\n /**\n * If set, the decoration will be rendered before the text with this CSS class name.\n */\n beforeContentClassName?: string;\n /**\n * If set, the decoration will be rendered after the text with this CSS class name.\n */\n afterContentClassName?: string;\n }\n\n /**\n * New model decorations.\n */\n export interface IModelDeltaDecoration {\n /**\n * Range that this decoration covers.\n */\n range: IRange;\n /**\n * Options associated with this decoration.\n */\n options: IModelDecorationOptions;\n }\n\n /**\n * A decoration in the model.\n */\n export interface IModelDecoration {\n /**\n * Identifier for a decoration.\n */\n readonly id: string;\n /**\n * Identifier for a decoration's owener.\n */\n readonly ownerId: number;\n /**\n * Range that this decoration covers.\n */\n readonly range: Range;\n /**\n * Options associated with this decoration.\n */\n readonly options: IModelDecorationOptions;\n /**\n * A flag describing if this is a problem decoration (e.g. warning/error).\n */\n readonly isForValidation: boolean;\n }\n\n /**\n * Word inside a model.\n */\n export interface IWordAtPosition {\n /**\n * The word.\n */\n readonly word: string;\n /**\n * The column where the word starts.\n */\n readonly startColumn: number;\n /**\n * The column where the word ends.\n */\n readonly endColumn: number;\n }\n\n /**\n * End of line character preference.\n */\n export enum EndOfLinePreference {\n /**\n * Use the end of line character identified in the text buffer.\n */\n TextDefined = 0,\n /**\n * Use line feed (\\n) as the end of line character.\n */\n LF = 1,\n /**\n * Use carriage return and line feed (\\r\\n) as the end of line character.\n */\n CRLF = 2,\n }\n\n /**\n * The default end of line to use when instantiating models.\n */\n export enum DefaultEndOfLine {\n /**\n * Use line feed (\\n) as the end of line character.\n */\n LF = 1,\n /**\n * Use carriage return and line feed (\\r\\n) as the end of line character.\n */\n CRLF = 2,\n }\n\n /**\n * End of line character preference.\n */\n export enum EndOfLineSequence {\n /**\n * Use line feed (\\n) as the end of line character.\n */\n LF = 0,\n /**\n * Use carriage return and line feed (\\r\\n) as the end of line character.\n */\n CRLF = 1,\n }\n\n /**\n * An identifier for a single edit operation.\n */\n export interface ISingleEditOperationIdentifier {\n /**\n * Identifier major\n */\n major: number;\n /**\n * Identifier minor\n */\n minor: number;\n }\n\n /**\n * A builder and helper for edit operations for a command.\n */\n export interface IEditOperationBuilder {\n /**\n * Add a new edit operation (a replace operation).\n * @param range The range to replace (delete). May be empty to represent a simple insert.\n * @param text The text to replace with. May be null to represent a simple delete.\n */\n addEditOperation(range: Range, text: string): void;\n /**\n * Add a new edit operation (a replace operation).\n * The inverse edits will be accessible in `ICursorStateComputerData.getInverseEditOperations()`\n * @param range The range to replace (delete). May be empty to represent a simple insert.\n * @param text The text to replace with. May be null to represent a simple delete.\n */\n addTrackedEditOperation(range: Range, text: string): void;\n /**\n * Track `selection` when applying edit operations.\n * A best effort will be made to not grow/expand the selection.\n * An empty selection will clamp to a nearby character.\n * @param selection The selection to track.\n * @param trackPreviousOnEmpty If set, and the selection is empty, indicates whether the selection\n * should clamp to the previous or the next character.\n * @return A unique identifer.\n */\n trackSelection(selection: Selection, trackPreviousOnEmpty?: boolean): string;\n }\n\n /**\n * A helper for computing cursor state after a command.\n */\n export interface ICursorStateComputerData {\n /**\n * Get the inverse edit operations of the added edit operations.\n */\n getInverseEditOperations(): IIdentifiedSingleEditOperation[];\n /**\n * Get a previously tracked selection.\n * @param id The unique identifier returned by `trackSelection`.\n * @return The selection.\n */\n getTrackedSelection(id: string): Selection;\n }\n\n /**\n * A command that modifies text / cursor state on a model.\n */\n export interface ICommand {\n /**\n * Get the edit operations needed to execute this command.\n * @param model The model the command will execute on.\n * @param builder A helper to collect the needed edit operations and to track selections.\n */\n getEditOperations(model: ITokenizedModel, builder: IEditOperationBuilder): void;\n /**\n * Compute the cursor state after the edit operations were applied.\n * @param model The model the commad has executed on.\n * @param helper A helper to get inverse edit operations and to get previously tracked selections.\n * @return The cursor state after the command executed.\n */\n computeCursorState(model: ITokenizedModel, helper: ICursorStateComputerData): Selection;\n }\n\n /**\n * A single edit operation, that acts as a simple replace.\n * i.e. Replace text at `range` with `text` in model.\n */\n export interface ISingleEditOperation {\n /**\n * The range to replace. This can be empty to emulate a simple insert.\n */\n range: IRange;\n /**\n * The text to replace with. This can be null to emulate a simple delete.\n */\n text: string;\n /**\n * This indicates that this operation has \"insert\" semantics.\n * i.e. forceMoveMarkers = true => if `range` is collapsed, all markers at the position will be moved.\n */\n forceMoveMarkers?: boolean;\n }\n\n /**\n * A single edit operation, that has an identifier.\n */\n export interface IIdentifiedSingleEditOperation {\n /**\n * An identifier associated with this single edit operation.\n */\n identifier: ISingleEditOperationIdentifier;\n /**\n * The range to replace. This can be empty to emulate a simple insert.\n */\n range: Range;\n /**\n * The text to replace with. This can be null to emulate a simple delete.\n */\n text: string;\n /**\n * This indicates that this operation has \"insert\" semantics.\n * i.e. forceMoveMarkers = true => if `range` is collapsed, all markers at the position will be moved.\n */\n forceMoveMarkers: boolean;\n /**\n * This indicates that this operation is inserting automatic whitespace\n * that can be removed on next model edit operation if `config.trimAutoWhitespace` is true.\n */\n isAutoWhitespaceEdit?: boolean;\n }\n\n /**\n * A callback that can compute the cursor state after applying a series of edit operations.\n */\n export interface ICursorStateComputer {\n /**\n * A callback that can compute the resulting cursors state after some edit operations have been executed.\n */\n (inverseEditOperations: IIdentifiedSingleEditOperation[]): Selection[];\n }\n\n export class TextModelResolvedOptions {\n _textModelResolvedOptionsBrand: void;\n readonly tabSize: number;\n readonly insertSpaces: boolean;\n readonly defaultEOL: DefaultEndOfLine;\n readonly trimAutoWhitespace: boolean;\n }\n\n export interface ITextModelUpdateOptions {\n tabSize?: number;\n insertSpaces?: boolean;\n trimAutoWhitespace?: boolean;\n }\n\n /**\n * A textual read-only model.\n */\n export interface ITextModel {\n /**\n * Get the resolved options for this model.\n */\n getOptions(): TextModelResolvedOptions;\n /**\n * Get the current version id of the model.\n * Anytime a change happens to the model (even undo/redo),\n * the version id is incremented.\n */\n getVersionId(): number;\n /**\n * Get the alternative version id of the model.\n * This alternative version id is not always incremented,\n * it will return the same values in the case of undo-redo.\n */\n getAlternativeVersionId(): number;\n /**\n * Replace the entire text buffer value contained in this model.\n */\n setValue(newValue: string): void;\n /**\n * Get the text stored in this model.\n * @param eol The end of line character preference. Defaults to `EndOfLinePreference.TextDefined`.\n * @param preserverBOM Preserve a BOM character if it was detected when the model was constructed.\n * @return The text.\n */\n getValue(eol?: EndOfLinePreference, preserveBOM?: boolean): string;\n /**\n * Get the length of the text stored in this model.\n */\n getValueLength(eol?: EndOfLinePreference, preserveBOM?: boolean): number;\n /**\n * Get the text in a certain range.\n * @param range The range describing what text to get.\n * @param eol The end of line character preference. This will only be used for multiline ranges. Defaults to `EndOfLinePreference.TextDefined`.\n * @return The text.\n */\n getValueInRange(range: IRange, eol?: EndOfLinePreference): string;\n /**\n * Get the length of text in a certain range.\n * @param range The range describing what text length to get.\n * @return The text length.\n */\n getValueLengthInRange(range: IRange): number;\n /**\n * Get the number of lines in the model.\n */\n getLineCount(): number;\n /**\n * Get the text for a certain line.\n */\n getLineContent(lineNumber: number): string;\n /**\n * Get the text for all lines.\n */\n getLinesContent(): string[];\n /**\n * Get the end of line sequence predominantly used in the text buffer.\n * @return EOL char sequence (e.g.: '\\n' or '\\r\\n').\n */\n getEOL(): string;\n /**\n * Change the end of line sequence used in the text buffer.\n */\n setEOL(eol: EndOfLineSequence): void;\n /**\n * Get the minimum legal column for line at `lineNumber`\n */\n getLineMinColumn(lineNumber: number): number;\n /**\n * Get the maximum legal column for line at `lineNumber`\n */\n getLineMaxColumn(lineNumber: number): number;\n /**\n * Returns the column before the first non whitespace character for line at `lineNumber`.\n * Returns 0 if line is empty or contains only whitespace.\n */\n getLineFirstNonWhitespaceColumn(lineNumber: number): number;\n /**\n * Returns the column after the last non whitespace character for line at `lineNumber`.\n * Returns 0 if line is empty or contains only whitespace.\n */\n getLineLastNonWhitespaceColumn(lineNumber: number): number;\n /**\n * Create a valid position,\n */\n validatePosition(position: IPosition): Position;\n /**\n * Advances the given position by the given offest (negative offsets are also accepted)\n * and returns it as a new valid position.\n *\n * If the offset and position are such that their combination goes beyond the beginning or\n * end of the model, throws an exception.\n *\n * If the ofsset is such that the new position would be in the middle of a multi-byte\n * line terminator, throws an exception.\n */\n modifyPosition(position: IPosition, offset: number): Position;\n /**\n * Create a valid range.\n */\n validateRange(range: IRange): Range;\n /**\n * Converts the position to a zero-based offset.\n *\n * The position will be [adjusted](#TextDocument.validatePosition).\n *\n * @param position A position.\n * @return A valid zero-based offset.\n */\n getOffsetAt(position: IPosition): number;\n /**\n * Converts a zero-based offset to a position.\n *\n * @param offset A zero-based offset.\n * @return A valid [position](#Position).\n */\n getPositionAt(offset: number): Position;\n /**\n * Get a range covering the entire model\n */\n getFullModelRange(): Range;\n /**\n * Returns iff the model was disposed or not.\n */\n isDisposed(): boolean;\n /**\n * Search the model.\n * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.\n * @param searchOnlyEditableRange Limit the searching to only search inside the editable range of the model.\n * @param isRegex Used to indicate that `searchString` is a regular expression.\n * @param matchCase Force the matching to match lower/upper case exactly.\n * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.\n * @param captureMatches The result will contain the captured groups.\n * @param limitResultCount Limit the number of results\n * @return The ranges where the matches are. It is empty if not matches have been found.\n */\n findMatches(searchString: string, searchOnlyEditableRange: boolean, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean, limitResultCount?: number): FindMatch[];\n /**\n * Search the model.\n * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.\n * @param searchScope Limit the searching to only search inside this range.\n * @param isRegex Used to indicate that `searchString` is a regular expression.\n * @param matchCase Force the matching to match lower/upper case exactly.\n * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.\n * @param captureMatches The result will contain the captured groups.\n * @param limitResultCount Limit the number of results\n * @return The ranges where the matches are. It is empty if no matches have been found.\n */\n findMatches(searchString: string, searchScope: IRange, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean, limitResultCount?: number): FindMatch[];\n /**\n * Search the model for the next match. Loops to the beginning of the model if needed.\n * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.\n * @param searchStart Start the searching at the specified position.\n * @param isRegex Used to indicate that `searchString` is a regular expression.\n * @param matchCase Force the matching to match lower/upper case exactly.\n * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.\n * @param captureMatches The result will contain the captured groups.\n * @return The range where the next match is. It is null if no next match has been found.\n */\n findNextMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean): FindMatch;\n /**\n * Search the model for the previous match. Loops to the end of the model if needed.\n * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.\n * @param searchStart Start the searching at the specified position.\n * @param isRegex Used to indicate that `searchString` is a regular expression.\n * @param matchCase Force the matching to match lower/upper case exactly.\n * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.\n * @param captureMatches The result will contain the captured groups.\n * @return The range where the previous match is. It is null if no previous match has been found.\n */\n findPreviousMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean): FindMatch;\n }\n\n export class FindMatch {\n _findMatchBrand: void;\n readonly range: Range;\n readonly matches: string[];\n }\n\n export interface IReadOnlyModel extends ITextModel {\n /**\n * Gets the resource associated with this editor model.\n */\n readonly uri: Uri;\n /**\n * Get the language associated with this model.\n */\n getModeId(): string;\n /**\n * Get the word under or besides `position`.\n * @param position The position to look for a word.\n * @param skipSyntaxTokens Ignore syntax tokens, as identified by the mode.\n * @return The word under or besides `position`. Might be null.\n */\n getWordAtPosition(position: IPosition): IWordAtPosition;\n /**\n * Get the word under or besides `position` trimmed to `position`.column\n * @param position The position to look for a word.\n * @param skipSyntaxTokens Ignore syntax tokens, as identified by the mode.\n * @return The word under or besides `position`. Will never be null.\n */\n getWordUntilPosition(position: IPosition): IWordAtPosition;\n }\n\n /**\n * A model that is tokenized.\n */\n export interface ITokenizedModel extends ITextModel {\n /**\n * Get the language associated with this model.\n */\n getModeId(): string;\n /**\n * Get the word under or besides `position`.\n * @param position The position to look for a word.\n * @param skipSyntaxTokens Ignore syntax tokens, as identified by the mode.\n * @return The word under or besides `position`. Might be null.\n */\n getWordAtPosition(position: IPosition): IWordAtPosition;\n /**\n * Get the word under or besides `position` trimmed to `position`.column\n * @param position The position to look for a word.\n * @param skipSyntaxTokens Ignore syntax tokens, as identified by the mode.\n * @return The word under or besides `position`. Will never be null.\n */\n getWordUntilPosition(position: IPosition): IWordAtPosition;\n }\n\n /**\n * A model that can track markers.\n */\n export interface ITextModelWithMarkers extends ITextModel {\n }\n\n /**\n * Describes the behavior of decorations when typing/editing near their edges.\n * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`\n */\n export enum TrackedRangeStickiness {\n AlwaysGrowsWhenTypingAtEdges = 0,\n NeverGrowsWhenTypingAtEdges = 1,\n GrowsOnlyWhenTypingBefore = 2,\n GrowsOnlyWhenTypingAfter = 3,\n }\n\n /**\n * A model that can have decorations.\n */\n export interface ITextModelWithDecorations {\n /**\n * Perform a minimum ammount of operations, in order to transform the decorations\n * identified by `oldDecorations` to the decorations described by `newDecorations`\n * and returns the new identifiers associated with the resulting decorations.\n *\n * @param oldDecorations Array containing previous decorations identifiers.\n * @param newDecorations Array describing what decorations should result after the call.\n * @param ownerId Identifies the editor id in which these decorations should appear. If no `ownerId` is provided, the decorations will appear in all editors that attach this model.\n * @return An array containing the new decorations identifiers.\n */\n deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[], ownerId?: number): string[];\n /**\n * Get the options associated with a decoration.\n * @param id The decoration id.\n * @return The decoration options or null if the decoration was not found.\n */\n getDecorationOptions(id: string): IModelDecorationOptions;\n /**\n * Get the range associated with a decoration.\n * @param id The decoration id.\n * @return The decoration range or null if the decoration was not found.\n */\n getDecorationRange(id: string): Range;\n /**\n * Gets all the decorations for the line `lineNumber` as an array.\n * @param lineNumber The line number\n * @param ownerId If set, it will ignore decorations belonging to other owners.\n * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).\n * @return An array with the decorations\n */\n getLineDecorations(lineNumber: number, ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];\n /**\n * Gets all the decorations for the lines between `startLineNumber` and `endLineNumber` as an array.\n * @param startLineNumber The start line number\n * @param endLineNumber The end line number\n * @param ownerId If set, it will ignore decorations belonging to other owners.\n * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).\n * @return An array with the decorations\n */\n getLinesDecorations(startLineNumber: number, endLineNumber: number, ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];\n /**\n * Gets all the deocorations in a range as an array. Only `startLineNumber` and `endLineNumber` from `range` are used for filtering.\n * So for now it returns all the decorations on the same line as `range`.\n * @param range The range to search in\n * @param ownerId If set, it will ignore decorations belonging to other owners.\n * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).\n * @return An array with the decorations\n */\n getDecorationsInRange(range: IRange, ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];\n /**\n * Gets all the decorations as an array.\n * @param ownerId If set, it will ignore decorations belonging to other owners.\n * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).\n */\n getAllDecorations(ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];\n }\n\n /**\n * An editable text model.\n */\n export interface IEditableTextModel extends ITextModelWithMarkers {\n /**\n * Normalize a string containing whitespace according to indentation rules (converts to spaces or to tabs).\n */\n normalizeIndentation(str: string): string;\n /**\n * Get what is considered to be one indent (e.g. a tab character or 4 spaces, etc.).\n */\n getOneIndent(): string;\n /**\n * Change the options of this model.\n */\n updateOptions(newOpts: ITextModelUpdateOptions): void;\n /**\n * Detect the indentation options for this model from its content.\n */\n detectIndentation(defaultInsertSpaces: boolean, defaultTabSize: number): void;\n /**\n * Push a stack element onto the undo stack. This acts as an undo/redo point.\n * The idea is to use `pushEditOperations` to edit the model and then to\n * `pushStackElement` to create an undo/redo stop point.\n */\n pushStackElement(): void;\n /**\n * Push edit operations, basically editing the model. This is the preferred way\n * of editing the model. The edit operations will land on the undo stack.\n * @param beforeCursorState The cursor state before the edit operaions. This cursor state will be returned when `undo` or `redo` are invoked.\n * @param editOperations The edit operations.\n * @param cursorStateComputer A callback that can compute the resulting cursors state after the edit operations have been executed.\n * @return The cursor state returned by the `cursorStateComputer`.\n */\n pushEditOperations(beforeCursorState: Selection[], editOperations: IIdentifiedSingleEditOperation[], cursorStateComputer: ICursorStateComputer): Selection[];\n /**\n * Edit the model without adding the edits to the undo stack.\n * This can have dire consequences on the undo stack! See @pushEditOperations for the preferred way.\n * @param operations The edit operations.\n * @return The inverse edit operations, that, when applied, will bring the model back to the previous state.\n */\n applyEdits(operations: IIdentifiedSingleEditOperation[]): IIdentifiedSingleEditOperation[];\n }\n\n /**\n * A model.\n */\n export interface IModel extends IReadOnlyModel, IEditableTextModel, ITextModelWithMarkers, ITokenizedModel, ITextModelWithDecorations {\n /**\n * An event emitted when the contents of the model have changed.\n * @event\n */\n onDidChangeContent(listener: (e: IModelContentChangedEvent) => void): IDisposable;\n /**\n * An event emitted when decorations of the model have changed.\n * @event\n */\n onDidChangeDecorations(listener: (e: IModelDecorationsChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the model options have changed.\n * @event\n */\n onDidChangeOptions(listener: (e: IModelOptionsChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the language associated with the model has changed.\n * @event\n */\n onDidChangeLanguage(listener: (e: IModelLanguageChangedEvent) => void): IDisposable;\n /**\n * An event emitted right before disposing the model.\n * @event\n */\n onWillDispose(listener: () => void): IDisposable;\n /**\n * A unique identifier associated with this model.\n */\n readonly id: string;\n /**\n * Destroy this model. This will unbind the model from the mode\n * and make all necessary clean-up to release this object to the GC.\n */\n dispose(): void;\n }\n\n /**\n * A model for the diff editor.\n */\n export interface IDiffEditorModel {\n /**\n * Original model.\n */\n original: IModel;\n /**\n * Modified model.\n */\n modified: IModel;\n }\n\n /**\n * An event describing that an editor has had its model reset (i.e. `editor.setModel()`).\n */\n export interface IModelChangedEvent {\n /**\n * The `uri` of the previous model or null.\n */\n readonly oldModelUrl: Uri;\n /**\n * The `uri` of the new model or null.\n */\n readonly newModelUrl: Uri;\n }\n\n export interface IDimension {\n width: number;\n height: number;\n }\n\n /**\n * A change\n */\n export interface IChange {\n readonly originalStartLineNumber: number;\n readonly originalEndLineNumber: number;\n readonly modifiedStartLineNumber: number;\n readonly modifiedEndLineNumber: number;\n }\n\n /**\n * A character level change.\n */\n export interface ICharChange extends IChange {\n readonly originalStartColumn: number;\n readonly originalEndColumn: number;\n readonly modifiedStartColumn: number;\n readonly modifiedEndColumn: number;\n }\n\n /**\n * A line change\n */\n export interface ILineChange extends IChange {\n readonly charChanges: ICharChange[];\n }\n\n /**\n * Information about a line in the diff editor\n */\n export interface IDiffLineInformation {\n readonly equivalentLineNumber: number;\n }\n\n export interface INewScrollPosition {\n scrollLeft?: number;\n scrollTop?: number;\n }\n\n /**\n * Description of an action contribution\n */\n export interface IActionDescriptor {\n /**\n * An unique identifier of the contributed action.\n */\n id: string;\n /**\n * A label of the action that will be presented to the user.\n */\n label: string;\n /**\n * Precondition rule.\n */\n precondition?: string;\n /**\n * An array of keybindings for the action.\n */\n keybindings?: number[];\n /**\n * The keybinding rule (condition on top of precondition).\n */\n keybindingContext?: string;\n /**\n * Control if the action should show up in the context menu and where.\n * The context menu of the editor has these default:\n * navigation - The navigation group comes first in all cases.\n * 1_modification - This group comes next and contains commands that modify your code.\n * 9_cutcopypaste - The last default group with the basic editing commands.\n * You can also create your own group.\n * Defaults to null (don't show in context menu).\n */\n contextMenuGroupId?: string;\n /**\n * Control the order in the context menu group.\n */\n contextMenuOrder?: number;\n /**\n * Method that will be executed when the action is triggered.\n * @param editor The editor instance is passed in as a convinience\n */\n run(editor: ICommonCodeEditor): void | Promise;\n }\n\n export interface IEditorAction {\n readonly id: string;\n readonly label: string;\n readonly alias: string;\n isSupported(): boolean;\n run(): Promise;\n }\n\n export type IEditorModel = IModel | IDiffEditorModel;\n\n /**\n * A (serializable) state of the cursors.\n */\n export interface ICursorState {\n inSelectionMode: boolean;\n selectionStart: IPosition;\n position: IPosition;\n }\n\n /**\n * A (serializable) state of the view.\n */\n export interface IViewState {\n scrollTop: number;\n scrollTopWithoutViewZones: number;\n scrollLeft: number;\n }\n\n /**\n * A (serializable) state of the code editor.\n */\n export interface ICodeEditorViewState {\n cursorState: ICursorState[];\n viewState: IViewState;\n contributionsState: {\n [id: string]: any;\n };\n }\n\n /**\n * (Serializable) View state for the diff editor.\n */\n export interface IDiffEditorViewState {\n original: ICodeEditorViewState;\n modified: ICodeEditorViewState;\n }\n\n /**\n * An editor view state.\n */\n export type IEditorViewState = ICodeEditorViewState | IDiffEditorViewState;\n\n /**\n * An editor.\n */\n export interface IEditor {\n /**\n * An event emitted when the editor has been disposed.\n * @event\n */\n onDidDispose(listener: () => void): IDisposable;\n /**\n * Dispose the editor.\n */\n dispose(): void;\n /**\n * Get a unique id for this editor instance.\n */\n getId(): string;\n /**\n * Get the editor type. Please see `EditorType`.\n * This is to avoid an instanceof check\n */\n getEditorType(): string;\n /**\n * Update the editor's options after the editor has been created.\n */\n updateOptions(newOptions: IEditorOptions): void;\n /**\n * Instructs the editor to remeasure its container. This method should\n * be called when the container of the editor gets resized.\n */\n layout(dimension?: IDimension): void;\n /**\n * Brings browser focus to the editor text\n */\n focus(): void;\n /**\n * Returns true if this editor has keyboard focus (e.g. cursor is blinking).\n */\n isFocused(): boolean;\n /**\n * Returns all actions associated with this editor.\n */\n getActions(): IEditorAction[];\n /**\n * Returns all actions associated with this editor.\n */\n getSupportedActions(): IEditorAction[];\n /**\n * Saves current view state of the editor in a serializable object.\n */\n saveViewState(): IEditorViewState;\n /**\n * Restores the view state of the editor from a serializable object generated by `saveViewState`.\n */\n restoreViewState(state: IEditorViewState): void;\n /**\n * Given a position, returns a column number that takes tab-widths into account.\n */\n getVisibleColumnFromPosition(position: IPosition): number;\n /**\n * Returns the primary position of the cursor.\n */\n getPosition(): Position;\n /**\n * Set the primary position of the cursor. This will remove any secondary cursors.\n * @param position New primary cursor's position\n */\n setPosition(position: IPosition): void;\n /**\n * Scroll vertically as necessary and reveal a line.\n */\n revealLine(lineNumber: number): void;\n /**\n * Scroll vertically as necessary and reveal a line centered vertically.\n */\n revealLineInCenter(lineNumber: number): void;\n /**\n * Scroll vertically as necessary and reveal a line centered vertically only if it lies outside the viewport.\n */\n revealLineInCenterIfOutsideViewport(lineNumber: number): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a position.\n */\n revealPosition(position: IPosition, revealVerticalInCenter?: boolean, revealHorizontal?: boolean): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a position centered vertically.\n */\n revealPositionInCenter(position: IPosition): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a position centered vertically only if it lies outside the viewport.\n */\n revealPositionInCenterIfOutsideViewport(position: IPosition): void;\n /**\n * Returns the primary selection of the editor.\n */\n getSelection(): Selection;\n /**\n * Returns all the selections of the editor.\n */\n getSelections(): Selection[];\n /**\n * Set the primary selection of the editor. This will remove any secondary cursors.\n * @param selection The new selection\n */\n setSelection(selection: IRange): void;\n /**\n * Set the primary selection of the editor. This will remove any secondary cursors.\n * @param selection The new selection\n */\n setSelection(selection: Range): void;\n /**\n * Set the primary selection of the editor. This will remove any secondary cursors.\n * @param selection The new selection\n */\n setSelection(selection: ISelection): void;\n /**\n * Set the primary selection of the editor. This will remove any secondary cursors.\n * @param selection The new selection\n */\n setSelection(selection: Selection): void;\n /**\n * Set the selections for all the cursors of the editor.\n * Cursors will be removed or added, as necessary.\n */\n setSelections(selections: ISelection[]): void;\n /**\n * Scroll vertically as necessary and reveal lines.\n */\n revealLines(startLineNumber: number, endLineNumber: number): void;\n /**\n * Scroll vertically as necessary and reveal lines centered vertically.\n */\n revealLinesInCenter(lineNumber: number, endLineNumber: number): void;\n /**\n * Scroll vertically as necessary and reveal lines centered vertically only if it lies outside the viewport.\n */\n revealLinesInCenterIfOutsideViewport(lineNumber: number, endLineNumber: number): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a range.\n */\n revealRange(range: IRange): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a range centered vertically.\n */\n revealRangeInCenter(range: IRange): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a range at the top of the viewport.\n */\n revealRangeAtTop(range: IRange): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a range centered vertically only if it lies outside the viewport.\n */\n revealRangeInCenterIfOutsideViewport(range: IRange): void;\n /**\n * Directly trigger a handler or an editor action.\n * @param source The source of the call.\n * @param handlerId The id of the handler or the id of a contribution.\n * @param payload Extra data to be sent to the handler.\n */\n trigger(source: string, handlerId: string, payload: any): void;\n /**\n * Gets the current model attached to this editor.\n */\n getModel(): IEditorModel;\n /**\n * Sets the current model attached to this editor.\n * If the previous model was created by the editor via the value key in the options\n * literal object, it will be destroyed. Otherwise, if the previous model was set\n * via setModel, or the model key in the options literal object, the previous model\n * will not be destroyed.\n * It is safe to call setModel(null) to simply detach the current model from the editor.\n */\n setModel(model: IEditorModel): void;\n }\n\n /**\n * An editor contribution that gets created every time a new editor gets created and gets disposed when the editor gets disposed.\n */\n export interface IEditorContribution {\n /**\n * Get a unique identifier for this contribution.\n */\n getId(): string;\n /**\n * Dispose this contribution.\n */\n dispose(): void;\n /**\n * Store view state.\n */\n saveViewState?(): any;\n /**\n * Restore view state.\n */\n restoreViewState?(state: any): void;\n }\n\n export interface ICommonCodeEditor extends IEditor {\n /**\n * An event emitted when the content of the current model has changed.\n * @event\n */\n onDidChangeModelContent(listener: (e: IModelContentChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the language of the current model has changed.\n * @event\n */\n onDidChangeModelLanguage(listener: (e: IModelLanguageChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the options of the current model has changed.\n * @event\n */\n onDidChangeModelOptions(listener: (e: IModelOptionsChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the configuration of the editor has changed. (e.g. `editor.updateOptions()`)\n * @event\n */\n onDidChangeConfiguration(listener: (e: IConfigurationChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the cursor position has changed.\n * @event\n */\n onDidChangeCursorPosition(listener: (e: ICursorPositionChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the cursor selection has changed.\n * @event\n */\n onDidChangeCursorSelection(listener: (e: ICursorSelectionChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the model of this editor has changed (e.g. `editor.setModel()`).\n * @event\n */\n onDidChangeModel(listener: (e: IModelChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the decorations of the current model have changed.\n * @event\n */\n onDidChangeModelDecorations(listener: (e: IModelDecorationsChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the text inside this editor gained focus (i.e. cursor blinking).\n * @event\n */\n onDidFocusEditorText(listener: () => void): IDisposable;\n /**\n * An event emitted when the text inside this editor lost focus.\n * @event\n */\n onDidBlurEditorText(listener: () => void): IDisposable;\n /**\n * An event emitted when the text inside this editor or an editor widget gained focus.\n * @event\n */\n onDidFocusEditor(listener: () => void): IDisposable;\n /**\n * An event emitted when the text inside this editor or an editor widget lost focus.\n * @event\n */\n onDidBlurEditor(listener: () => void): IDisposable;\n /**\n * Saves current view state of the editor in a serializable object.\n */\n saveViewState(): ICodeEditorViewState;\n /**\n * Restores the view state of the editor from a serializable object generated by `saveViewState`.\n */\n restoreViewState(state: ICodeEditorViewState): void;\n /**\n * Returns true if this editor or one of its widgets has keyboard focus.\n */\n hasWidgetFocus(): boolean;\n /**\n * Get a contribution of this editor.\n * @id Unique identifier of the contribution.\n * @return The contribution or null if contribution not found.\n */\n getContribution(id: string): T;\n /**\n * Type the getModel() of IEditor.\n */\n getModel(): IModel;\n /**\n * Returns the current editor's configuration\n */\n getConfiguration(): InternalEditorOptions;\n /**\n * Get value of the current model attached to this editor.\n * @see IModel.getValue\n */\n getValue(options?: {\n preserveBOM: boolean;\n lineEnding: string;\n }): string;\n /**\n * Set the value of the current model attached to this editor.\n * @see IModel.setValue\n */\n setValue(newValue: string): void;\n /**\n * Get the scrollWidth of the editor's viewport.\n */\n getScrollWidth(): number;\n /**\n * Get the scrollLeft of the editor's viewport.\n */\n getScrollLeft(): number;\n /**\n * Get the scrollHeight of the editor's viewport.\n */\n getScrollHeight(): number;\n /**\n * Get the scrollTop of the editor's viewport.\n */\n getScrollTop(): number;\n /**\n * Change the scrollLeft of the editor's viewport.\n */\n setScrollLeft(newScrollLeft: number): void;\n /**\n * Change the scrollTop of the editor's viewport.\n */\n setScrollTop(newScrollTop: number): void;\n /**\n * Change the scroll position of the editor's viewport.\n */\n setScrollPosition(position: INewScrollPosition): void;\n /**\n * Get an action that is a contribution to this editor.\n * @id Unique identifier of the contribution.\n * @return The action or null if action not found.\n */\n getAction(id: string): IEditorAction;\n /**\n * Execute a command on the editor.\n * The edits will land on the undo-redo stack, but no \"undo stop\" will be pushed.\n * @param source The source of the call.\n * @param command The command to execute\n */\n executeCommand(source: string, command: ICommand): void;\n /**\n * Push an \"undo stop\" in the undo-redo stack.\n */\n pushUndoStop(): boolean;\n /**\n * Execute edits on the editor.\n * The edits will land on the undo-redo stack, but no \"undo stop\" will be pushed.\n * @param source The source of the call.\n * @param edits The edits to execute.\n * @param endCursoState Cursor state after the edits were applied.\n */\n executeEdits(source: string, edits: IIdentifiedSingleEditOperation[], endCursoState?: Selection[]): boolean;\n /**\n * Execute multiple (concommitent) commands on the editor.\n * @param source The source of the call.\n * @param command The commands to execute\n */\n executeCommands(source: string, commands: ICommand[]): void;\n /**\n * Get all the decorations on a line (filtering out decorations from other editors).\n */\n getLineDecorations(lineNumber: number): IModelDecoration[];\n /**\n * All decorations added through this call will get the ownerId of this editor.\n * @see IModel.deltaDecorations\n */\n deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[];\n /**\n * Get the layout info for the editor.\n */\n getLayoutInfo(): EditorLayoutInfo;\n }\n\n export interface ICommonDiffEditor extends IEditor {\n /**\n * An event emitted when the diff information computed by this diff editor has been updated.\n * @event\n */\n onDidUpdateDiff(listener: () => void): IDisposable;\n /**\n * Saves current view state of the editor in a serializable object.\n */\n saveViewState(): IDiffEditorViewState;\n /**\n * Restores the view state of the editor from a serializable object generated by `saveViewState`.\n */\n restoreViewState(state: IDiffEditorViewState): void;\n /**\n * Type the getModel() of IEditor.\n */\n getModel(): IDiffEditorModel;\n /**\n * Get the `original` editor.\n */\n getOriginalEditor(): ICommonCodeEditor;\n /**\n * Get the `modified` editor.\n */\n getModifiedEditor(): ICommonCodeEditor;\n /**\n * Get the computed diff information.\n */\n getLineChanges(): ILineChange[];\n /**\n * Get information based on computed diff about a line number from the original model.\n * If the diff computation is not finished or the model is missing, will return null.\n */\n getDiffLineInformationForOriginal(lineNumber: number): IDiffLineInformation;\n /**\n * Get information based on computed diff about a line number from the modified model.\n * If the diff computation is not finished or the model is missing, will return null.\n */\n getDiffLineInformationForModified(lineNumber: number): IDiffLineInformation;\n /**\n * @see ICodeEditor.getValue\n */\n getValue(options?: {\n preserveBOM: boolean;\n lineEnding: string;\n }): string;\n }\n\n /**\n * The type of the `IEditor`.\n */\n export var EditorType: {\n ICodeEditor: string;\n IDiffEditor: string;\n };\n\n /**\n * An event describing that the current mode associated with a model has changed.\n */\n export interface IModelLanguageChangedEvent {\n /**\n * Previous language\n */\n readonly oldLanguage: string;\n /**\n * New language\n */\n readonly newLanguage: string;\n }\n\n export interface IModelContentChange {\n /**\n * The range that got replaced.\n */\n readonly range: IRange;\n /**\n * The length of the range that got replaced.\n */\n readonly rangeLength: number;\n /**\n * The new text for the range.\n */\n readonly text: string;\n }\n\n /**\n * An event describing a change in the text of a model.\n */\n export interface IModelContentChangedEvent {\n readonly changes: IModelContentChange[];\n /**\n * The (new) end-of-line character.\n */\n readonly eol: string;\n /**\n * The new version id the model has transitioned to.\n */\n readonly versionId: number;\n /**\n * Flag that indicates that this event was generated while undoing.\n */\n readonly isUndoing: boolean;\n /**\n * Flag that indicates that this event was generated while redoing.\n */\n readonly isRedoing: boolean;\n /**\n * Flag that indicates that all decorations were lost with this edit.\n * The model has been reset to a new value.\n */\n readonly isFlush: boolean;\n }\n\n /**\n * An event describing that model decorations have changed.\n */\n export interface IModelDecorationsChangedEvent {\n /**\n * Lists of ids for added decorations.\n */\n readonly addedDecorations: string[];\n /**\n * Lists of ids for changed decorations.\n */\n readonly changedDecorations: string[];\n /**\n * List of ids for removed decorations.\n */\n readonly removedDecorations: string[];\n }\n\n /**\n * An event describing that some ranges of lines have been tokenized (their tokens have changed).\n */\n export interface IModelTokensChangedEvent {\n readonly ranges: {\n /**\n * The start of the range (inclusive)\n */\n readonly fromLineNumber: number;\n /**\n * The end of the range (inclusive)\n */\n readonly toLineNumber: number;\n }[];\n }\n\n export interface IModelOptionsChangedEvent {\n readonly tabSize: boolean;\n readonly insertSpaces: boolean;\n readonly trimAutoWhitespace: boolean;\n }\n\n /**\n * Describes the reason the cursor has changed its position.\n */\n export enum CursorChangeReason {\n /**\n * Unknown or not set.\n */\n NotSet = 0,\n /**\n * A `model.setValue()` was called.\n */\n ContentFlush = 1,\n /**\n * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers.\n */\n RecoverFromMarkers = 2,\n /**\n * There was an explicit user gesture.\n */\n Explicit = 3,\n /**\n * There was a Paste.\n */\n Paste = 4,\n /**\n * There was an Undo.\n */\n Undo = 5,\n /**\n * There was a Redo.\n */\n Redo = 6,\n }\n\n /**\n * An event describing that the cursor position has changed.\n */\n export interface ICursorPositionChangedEvent {\n /**\n * Primary cursor's position.\n */\n readonly position: Position;\n /**\n * Secondary cursors' position.\n */\n readonly secondaryPositions: Position[];\n /**\n * Reason.\n */\n readonly reason: CursorChangeReason;\n /**\n * Source of the call that caused the event.\n */\n readonly source: string;\n }\n\n /**\n * An event describing that the cursor selection has changed.\n */\n export interface ICursorSelectionChangedEvent {\n /**\n * The primary selection.\n */\n readonly selection: Selection;\n /**\n * The secondary selections.\n */\n readonly secondarySelections: Selection[];\n /**\n * Source of the call that caused the event.\n */\n readonly source: string;\n /**\n * Reason.\n */\n readonly reason: CursorChangeReason;\n }\n\n /**\n * Configuration options for editor scrollbars\n */\n export interface IEditorScrollbarOptions {\n /**\n * The size of arrows (if displayed).\n * Defaults to 11.\n */\n arrowSize?: number;\n /**\n * Render vertical scrollbar.\n * Accepted values: 'auto', 'visible', 'hidden'.\n * Defaults to 'auto'.\n */\n vertical?: string;\n /**\n * Render horizontal scrollbar.\n * Accepted values: 'auto', 'visible', 'hidden'.\n * Defaults to 'auto'.\n */\n horizontal?: string;\n /**\n * Cast horizontal and vertical shadows when the content is scrolled.\n * Defaults to true.\n */\n useShadows?: boolean;\n /**\n * Render arrows at the top and bottom of the vertical scrollbar.\n * Defaults to false.\n */\n verticalHasArrows?: boolean;\n /**\n * Render arrows at the left and right of the horizontal scrollbar.\n * Defaults to false.\n */\n horizontalHasArrows?: boolean;\n /**\n * Listen to mouse wheel events and react to them by scrolling.\n * Defaults to true.\n */\n handleMouseWheel?: boolean;\n /**\n * Height in pixels for the horizontal scrollbar.\n * Defaults to 10 (px).\n */\n horizontalScrollbarSize?: number;\n /**\n * Width in pixels for the vertical scrollbar.\n * Defaults to 10 (px).\n */\n verticalScrollbarSize?: number;\n /**\n * Width in pixels for the vertical slider.\n * Defaults to `verticalScrollbarSize`.\n */\n verticalSliderSize?: number;\n /**\n * Height in pixels for the horizontal slider.\n * Defaults to `horizontalScrollbarSize`.\n */\n horizontalSliderSize?: number;\n }\n\n /**\n * Configuration options for editor find widget\n */\n export interface IEditorFindOptions {\n /**\n * Controls if we seed search string in the Find Widget with editor selection.\n */\n seedSearchStringFromSelection?: boolean;\n /**\n * Controls if Find in Selection flag is turned on when multiple lines of text are selected in the editor.\n */\n autoFindInSelection: boolean;\n }\n\n /**\n * Configuration options for editor minimap\n */\n export interface IEditorMinimapOptions {\n /**\n * Enable the rendering of the minimap.\n * Defaults to false.\n */\n enabled?: boolean;\n /**\n * Control the rendering of the minimap slider.\n * Defaults to 'mouseover'.\n */\n showSlider?: 'always' | 'mouseover';\n /**\n * Render the actual text on a line (as opposed to color blocks).\n * Defaults to true.\n */\n renderCharacters?: boolean;\n /**\n * Limit the width of the minimap to render at most a certain number of columns.\n * Defaults to 120.\n */\n maxColumn?: number;\n }\n\n /**\n * Configuration options for the editor.\n */\n export interface IEditorOptions {\n /**\n * The aria label for the editor's textarea (when it is focused).\n */\n ariaLabel?: string;\n /**\n * Render vertical lines at the specified columns.\n * Defaults to empty array.\n */\n rulers?: number[];\n /**\n * A string containing the word separators used when doing word navigation.\n * Defaults to `~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?\n */\n wordSeparators?: string;\n /**\n * Enable Linux primary clipboard.\n * Defaults to true.\n */\n selectionClipboard?: boolean;\n /**\n * Control the rendering of line numbers.\n * If it is a function, it will be invoked when rendering a line number and the return value will be rendered.\n * Otherwise, if it is a truey, line numbers will be rendered normally (equivalent of using an identity function).\n * Otherwise, line numbers will not be rendered.\n * Defaults to true.\n */\n lineNumbers?: 'on' | 'off' | 'relative' | ((lineNumber: number) => string);\n /**\n * Should the corresponding line be selected when clicking on the line number?\n * Defaults to true.\n */\n selectOnLineNumbers?: boolean;\n /**\n * Control the width of line numbers, by reserving horizontal space for rendering at least an amount of digits.\n * Defaults to 5.\n */\n lineNumbersMinChars?: number;\n /**\n * Enable the rendering of the glyph margin.\n * Defaults to true in vscode and to false in monaco-editor.\n */\n glyphMargin?: boolean;\n /**\n * The width reserved for line decorations (in px).\n * Line decorations are placed between line numbers and the editor content.\n * You can pass in a string in the format floating point followed by \"ch\". e.g. 1.3ch.\n * Defaults to 10.\n */\n lineDecorationsWidth?: number | string;\n /**\n * When revealing the cursor, a virtual padding (px) is added to the cursor, turning it into a rectangle.\n * This virtual padding ensures that the cursor gets revealed before hitting the edge of the viewport.\n * Defaults to 30 (px).\n */\n revealHorizontalRightPadding?: number;\n /**\n * Render the editor selection with rounded borders.\n * Defaults to true.\n */\n roundedSelection?: boolean;\n /**\n * Class name to be added to the editor.\n */\n extraEditorClassName?: string;\n /**\n * Should the editor be read only.\n * Defaults to false.\n */\n readOnly?: boolean;\n /**\n * Control the behavior and rendering of the scrollbars.\n */\n scrollbar?: IEditorScrollbarOptions;\n /**\n * Control the behavior and rendering of the minimap.\n */\n minimap?: IEditorMinimapOptions;\n /**\n * Control the behavior of the find widget.\n */\n find?: IEditorFindOptions;\n /**\n * Display overflow widgets as `fixed`.\n * Defaults to `false`.\n */\n fixedOverflowWidgets?: boolean;\n /**\n * The number of vertical lanes the overview ruler should render.\n * Defaults to 2.\n */\n overviewRulerLanes?: number;\n /**\n * Controls if a border should be drawn around the overview ruler.\n * Defaults to `true`.\n */\n overviewRulerBorder?: boolean;\n /**\n * Control the cursor animation style, possible values are 'blink', 'smooth', 'phase', 'expand' and 'solid'.\n * Defaults to 'blink'.\n */\n cursorBlinking?: string;\n /**\n * Zoom the font in the editor when using the mouse wheel in combination with holding Ctrl.\n * Defaults to false.\n */\n mouseWheelZoom?: boolean;\n /**\n * Control the cursor style, either 'block' or 'line'.\n * Defaults to 'line'.\n */\n cursorStyle?: string;\n /**\n * Enable font ligatures.\n * Defaults to false.\n */\n fontLigatures?: boolean;\n /**\n * Disable the use of `will-change` for the editor margin and lines layers.\n * The usage of `will-change` acts as a hint for browsers to create an extra layer.\n * Defaults to false.\n */\n disableLayerHinting?: boolean;\n /**\n * Disable the optimizations for monospace fonts.\n * Defaults to false.\n */\n disableMonospaceOptimizations?: boolean;\n /**\n * Should the cursor be hidden in the overview ruler.\n * Defaults to false.\n */\n hideCursorInOverviewRuler?: boolean;\n /**\n * Enable that scrolling can go one screen size after the last line.\n * Defaults to true.\n */\n scrollBeyondLastLine?: boolean;\n /**\n * Enable that the editor will install an interval to check if its container dom node size has changed.\n * Enabling this might have a severe performance impact.\n * Defaults to false.\n */\n automaticLayout?: boolean;\n /**\n * Control the wrapping of the editor.\n * When `wordWrap` = \"off\", the lines will never wrap.\n * When `wordWrap` = \"on\", the lines will wrap at the viewport width.\n * When `wordWrap` = \"wordWrapColumn\", the lines will wrap at `wordWrapColumn`.\n * When `wordWrap` = \"bounded\", the lines will wrap at min(viewport width, wordWrapColumn).\n * Defaults to \"off\".\n */\n wordWrap?: 'off' | 'on' | 'wordWrapColumn' | 'bounded';\n /**\n * Control the wrapping of the editor.\n * When `wordWrap` = \"off\", the lines will never wrap.\n * When `wordWrap` = \"on\", the lines will wrap at the viewport width.\n * When `wordWrap` = \"wordWrapColumn\", the lines will wrap at `wordWrapColumn`.\n * When `wordWrap` = \"bounded\", the lines will wrap at min(viewport width, wordWrapColumn).\n * Defaults to 80.\n */\n wordWrapColumn?: number;\n /**\n * Force word wrapping when the text appears to be of a minified/generated file.\n * Defaults to true.\n */\n wordWrapMinified?: boolean;\n /**\n * Control indentation of wrapped lines. Can be: 'none', 'same' or 'indent'.\n * Defaults to 'same' in vscode and to 'none' in monaco-editor.\n */\n wrappingIndent?: string;\n /**\n * Configure word wrapping characters. A break will be introduced before these characters.\n * Defaults to '{([+'.\n */\n wordWrapBreakBeforeCharacters?: string;\n /**\n * Configure word wrapping characters. A break will be introduced after these characters.\n * Defaults to ' \\t})]?|&,;'.\n */\n wordWrapBreakAfterCharacters?: string;\n /**\n * Configure word wrapping characters. A break will be introduced after these characters only if no `wordWrapBreakBeforeCharacters` or `wordWrapBreakAfterCharacters` were found.\n * Defaults to '.'.\n */\n wordWrapBreakObtrusiveCharacters?: string;\n /**\n * Performance guard: Stop rendering a line after x characters.\n * Defaults to 10000.\n * Use -1 to never stop rendering\n */\n stopRenderingLineAfter?: number;\n /**\n * Enable hover.\n * Defaults to true.\n */\n hover?: boolean;\n /**\n * Enable detecting links and making them clickable.\n * Defaults to true.\n */\n links?: boolean;\n /**\n * Enable custom contextmenu.\n * Defaults to true.\n */\n contextmenu?: boolean;\n /**\n * A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.\n * Defaults to 1.\n */\n mouseWheelScrollSensitivity?: number;\n /**\n * The modifier to be used to add multiple cursors with the mouse.\n * Defaults to 'alt'\n */\n multiCursorModifier?: 'ctrlCmd' | 'alt';\n /**\n * Configure the editor's accessibility support.\n * Defaults to 'auto'. It is best to leave this to 'auto'.\n */\n accessibilitySupport?: 'auto' | 'off' | 'on';\n /**\n * Enable quick suggestions (shadow suggestions)\n * Defaults to true.\n */\n quickSuggestions?: boolean | {\n other: boolean;\n comments: boolean;\n strings: boolean;\n };\n /**\n * Quick suggestions show delay (in ms)\n * Defaults to 500 (ms)\n */\n quickSuggestionsDelay?: number;\n /**\n * Enables parameter hints\n */\n parameterHints?: boolean;\n /**\n * Render icons in suggestions box.\n * Defaults to true.\n */\n iconsInSuggestions?: boolean;\n /**\n * Enable auto closing brackets.\n * Defaults to true.\n */\n autoClosingBrackets?: boolean;\n /**\n * Enable auto indentation adjustment.\n * Defaults to false.\n */\n autoIndent?: boolean;\n /**\n * Enable format on type.\n * Defaults to false.\n */\n formatOnType?: boolean;\n /**\n * Enable format on paste.\n * Defaults to false.\n */\n formatOnPaste?: boolean;\n /**\n * Controls if the editor should allow to move selections via drag and drop.\n * Defaults to false.\n */\n dragAndDrop?: boolean;\n /**\n * Enable the suggestion box to pop-up on trigger characters.\n * Defaults to true.\n */\n suggestOnTriggerCharacters?: boolean;\n /**\n * Accept suggestions on ENTER.\n * Defaults to 'on'.\n */\n acceptSuggestionOnEnter?: 'on' | 'smart' | 'off';\n /**\n * Accept suggestions on provider defined characters.\n * Defaults to true.\n */\n acceptSuggestionOnCommitCharacter?: boolean;\n /**\n * Enable snippet suggestions. Default to 'true'.\n */\n snippetSuggestions?: 'top' | 'bottom' | 'inline' | 'none';\n /**\n * Copying without a selection copies the current line.\n */\n emptySelectionClipboard?: boolean;\n /**\n * Enable word based suggestions. Defaults to 'true'\n */\n wordBasedSuggestions?: boolean;\n /**\n * The font size for the suggest widget.\n * Defaults to the editor font size.\n */\n suggestFontSize?: number;\n /**\n * The line height for the suggest widget.\n * Defaults to the editor line height.\n */\n suggestLineHeight?: number;\n /**\n * Enable selection highlight.\n * Defaults to true.\n */\n selectionHighlight?: boolean;\n /**\n * Enable semantic occurrences highlight.\n * Defaults to true.\n */\n occurrencesHighlight?: boolean;\n /**\n * Show code lens\n * Defaults to true.\n */\n codeLens?: boolean;\n /**\n * Enable code folding\n * Defaults to true in vscode and to false in monaco-editor.\n */\n folding?: boolean;\n /**\n * Controls whether the fold actions in the gutter stay always visible or hide unless the mouse is over the gutter.\n * Defaults to 'mouseover'.\n */\n showFoldingControls?: 'always' | 'mouseover';\n /**\n * Enable highlighting of matching brackets.\n * Defaults to true.\n */\n matchBrackets?: boolean;\n /**\n * Enable rendering of whitespace.\n * Defaults to none.\n */\n renderWhitespace?: 'none' | 'boundary' | 'all';\n /**\n * Enable rendering of control characters.\n * Defaults to false.\n */\n renderControlCharacters?: boolean;\n /**\n * Enable rendering of indent guides.\n * Defaults to false.\n */\n renderIndentGuides?: boolean;\n /**\n * Enable rendering of current line highlight.\n * Defaults to all.\n */\n renderLineHighlight?: 'none' | 'gutter' | 'line' | 'all';\n /**\n * Inserting and deleting whitespace follows tab stops.\n */\n useTabStops?: boolean;\n /**\n * The font family\n */\n fontFamily?: string;\n /**\n * The font weight\n */\n fontWeight?: 'normal' | 'bold' | 'bolder' | 'lighter' | 'initial' | 'inherit' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\n /**\n * The font size\n */\n fontSize?: number;\n /**\n * The line height\n */\n lineHeight?: number;\n /**\n * The letter spacing\n */\n letterSpacing?: number;\n }\n\n /**\n * Configuration options for the diff editor.\n */\n export interface IDiffEditorOptions extends IEditorOptions {\n /**\n * Allow the user to resize the diff editor split view.\n * Defaults to true.\n */\n enableSplitViewResizing?: boolean;\n /**\n * Render the differences in two side-by-side editors.\n * Defaults to true.\n */\n renderSideBySide?: boolean;\n /**\n * Compute the diff by ignoring leading/trailing whitespace\n * Defaults to true.\n */\n ignoreTrimWhitespace?: boolean;\n /**\n * Render +/- indicators for added/deleted changes.\n * Defaults to true.\n */\n renderIndicators?: boolean;\n /**\n * Original model should be editable?\n * Defaults to false.\n */\n originalEditable?: boolean;\n }\n\n export enum RenderMinimap {\n None = 0,\n Small = 1,\n Large = 2,\n SmallBlocks = 3,\n LargeBlocks = 4,\n }\n\n /**\n * Describes how to indent wrapped lines.\n */\n export enum WrappingIndent {\n /**\n * No indentation => wrapped lines begin at column 1.\n */\n None = 0,\n /**\n * Same => wrapped lines get the same indentation as the parent.\n */\n Same = 1,\n /**\n * Indent => wrapped lines get +1 indentation as the parent.\n */\n Indent = 2,\n }\n\n /**\n * The kind of animation in which the editor's cursor should be rendered.\n */\n export enum TextEditorCursorBlinkingStyle {\n /**\n * Hidden\n */\n Hidden = 0,\n /**\n * Blinking\n */\n Blink = 1,\n /**\n * Blinking with smooth fading\n */\n Smooth = 2,\n /**\n * Blinking with prolonged filled state and smooth fading\n */\n Phase = 3,\n /**\n * Expand collapse animation on the y axis\n */\n Expand = 4,\n /**\n * No-Blinking\n */\n Solid = 5,\n }\n\n /**\n * The style in which the editor's cursor should be rendered.\n */\n export enum TextEditorCursorStyle {\n /**\n * As a vertical line (sitting between two characters).\n */\n Line = 1,\n /**\n * As a block (sitting on top of a character).\n */\n Block = 2,\n /**\n * As a horizontal line (sitting under a character).\n */\n Underline = 3,\n /**\n * As a thin vertical line (sitting between two characters).\n */\n LineThin = 4,\n /**\n * As an outlined block (sitting on top of a character).\n */\n BlockOutline = 5,\n /**\n * As a thin horizontal line (sitting under a character).\n */\n UnderlineThin = 6,\n }\n\n export interface InternalEditorScrollbarOptions {\n readonly arrowSize: number;\n readonly vertical: ScrollbarVisibility;\n readonly horizontal: ScrollbarVisibility;\n readonly useShadows: boolean;\n readonly verticalHasArrows: boolean;\n readonly horizontalHasArrows: boolean;\n readonly handleMouseWheel: boolean;\n readonly horizontalScrollbarSize: number;\n readonly horizontalSliderSize: number;\n readonly verticalScrollbarSize: number;\n readonly verticalSliderSize: number;\n readonly mouseWheelScrollSensitivity: number;\n }\n\n export interface InternalEditorMinimapOptions {\n readonly enabled: boolean;\n readonly showSlider: 'always' | 'mouseover';\n readonly renderCharacters: boolean;\n readonly maxColumn: number;\n }\n\n export interface InternalEditorFindOptions {\n readonly seedSearchStringFromSelection: boolean;\n readonly autoFindInSelection: boolean;\n }\n\n export interface EditorWrappingInfo {\n readonly inDiffEditor: boolean;\n readonly isDominatedByLongLines: boolean;\n readonly isWordWrapMinified: boolean;\n readonly isViewportWrapping: boolean;\n readonly wrappingColumn: number;\n readonly wrappingIndent: WrappingIndent;\n readonly wordWrapBreakBeforeCharacters: string;\n readonly wordWrapBreakAfterCharacters: string;\n readonly wordWrapBreakObtrusiveCharacters: string;\n }\n\n export interface InternalEditorViewOptions {\n readonly extraEditorClassName: string;\n readonly disableMonospaceOptimizations: boolean;\n readonly rulers: number[];\n readonly ariaLabel: string;\n readonly renderLineNumbers: boolean;\n readonly renderCustomLineNumbers: (lineNumber: number) => string;\n readonly renderRelativeLineNumbers: boolean;\n readonly selectOnLineNumbers: boolean;\n readonly glyphMargin: boolean;\n readonly revealHorizontalRightPadding: number;\n readonly roundedSelection: boolean;\n readonly overviewRulerLanes: number;\n readonly overviewRulerBorder: boolean;\n readonly cursorBlinking: TextEditorCursorBlinkingStyle;\n readonly mouseWheelZoom: boolean;\n readonly cursorStyle: TextEditorCursorStyle;\n readonly hideCursorInOverviewRuler: boolean;\n readonly scrollBeyondLastLine: boolean;\n readonly stopRenderingLineAfter: number;\n readonly renderWhitespace: 'none' | 'boundary' | 'all';\n readonly renderControlCharacters: boolean;\n readonly fontLigatures: boolean;\n readonly renderIndentGuides: boolean;\n readonly renderLineHighlight: 'none' | 'gutter' | 'line' | 'all';\n readonly scrollbar: InternalEditorScrollbarOptions;\n readonly minimap: InternalEditorMinimapOptions;\n readonly fixedOverflowWidgets: boolean;\n }\n\n export interface EditorContribOptions {\n readonly selectionClipboard: boolean;\n readonly hover: boolean;\n readonly links: boolean;\n readonly contextmenu: boolean;\n readonly quickSuggestions: boolean | {\n other: boolean;\n comments: boolean;\n strings: boolean;\n };\n readonly quickSuggestionsDelay: number;\n readonly parameterHints: boolean;\n readonly iconsInSuggestions: boolean;\n readonly formatOnType: boolean;\n readonly formatOnPaste: boolean;\n readonly suggestOnTriggerCharacters: boolean;\n readonly acceptSuggestionOnEnter: 'on' | 'smart' | 'off';\n readonly acceptSuggestionOnCommitCharacter: boolean;\n readonly snippetSuggestions: 'top' | 'bottom' | 'inline' | 'none';\n readonly wordBasedSuggestions: boolean;\n readonly suggestFontSize: number;\n readonly suggestLineHeight: number;\n readonly selectionHighlight: boolean;\n readonly occurrencesHighlight: boolean;\n readonly codeLens: boolean;\n readonly folding: boolean;\n readonly showFoldingControls: 'always' | 'mouseover';\n readonly matchBrackets: boolean;\n readonly find: InternalEditorFindOptions;\n }\n\n /**\n * Internal configuration options (transformed or computed) for the editor.\n */\n export class InternalEditorOptions {\n readonly _internalEditorOptionsBrand: void;\n readonly canUseLayerHinting: boolean;\n readonly pixelRatio: number;\n readonly editorClassName: string;\n readonly lineHeight: number;\n readonly readOnly: boolean;\n readonly multiCursorModifier: 'altKey' | 'ctrlKey' | 'metaKey';\n readonly wordSeparators: string;\n readonly autoClosingBrackets: boolean;\n readonly autoIndent: boolean;\n readonly useTabStops: boolean;\n readonly tabFocusMode: boolean;\n readonly dragAndDrop: boolean;\n readonly emptySelectionClipboard: boolean;\n readonly layoutInfo: EditorLayoutInfo;\n readonly fontInfo: FontInfo;\n readonly viewInfo: InternalEditorViewOptions;\n readonly wrappingInfo: EditorWrappingInfo;\n readonly contribInfo: EditorContribOptions;\n }\n\n /**\n * A description for the overview ruler position.\n */\n export interface OverviewRulerPosition {\n /**\n * Width of the overview ruler\n */\n readonly width: number;\n /**\n * Height of the overview ruler\n */\n readonly height: number;\n /**\n * Top position for the overview ruler\n */\n readonly top: number;\n /**\n * Right position for the overview ruler\n */\n readonly right: number;\n }\n\n /**\n * The internal layout details of the editor.\n */\n export interface EditorLayoutInfo {\n /**\n * Full editor width.\n */\n readonly width: number;\n /**\n * Full editor height.\n */\n readonly height: number;\n /**\n * Left position for the glyph margin.\n */\n readonly glyphMarginLeft: number;\n /**\n * The width of the glyph margin.\n */\n readonly glyphMarginWidth: number;\n /**\n * The height of the glyph margin.\n */\n readonly glyphMarginHeight: number;\n /**\n * Left position for the line numbers.\n */\n readonly lineNumbersLeft: number;\n /**\n * The width of the line numbers.\n */\n readonly lineNumbersWidth: number;\n /**\n * The height of the line numbers.\n */\n readonly lineNumbersHeight: number;\n /**\n * Left position for the line decorations.\n */\n readonly decorationsLeft: number;\n /**\n * The width of the line decorations.\n */\n readonly decorationsWidth: number;\n /**\n * The height of the line decorations.\n */\n readonly decorationsHeight: number;\n /**\n * Left position for the content (actual text)\n */\n readonly contentLeft: number;\n /**\n * The width of the content (actual text)\n */\n readonly contentWidth: number;\n /**\n * The height of the content (actual height)\n */\n readonly contentHeight: number;\n /**\n * The width of the minimap\n */\n readonly minimapWidth: number;\n /**\n * Minimap render type\n */\n readonly renderMinimap: RenderMinimap;\n /**\n * The number of columns (of typical characters) fitting on a viewport line.\n */\n readonly viewportColumn: number;\n /**\n * The width of the vertical scrollbar.\n */\n readonly verticalScrollbarWidth: number;\n /**\n * The height of the horizontal scrollbar.\n */\n readonly horizontalScrollbarHeight: number;\n /**\n * The position of the overview ruler.\n */\n readonly overviewRuler: OverviewRulerPosition;\n }\n\n /**\n * An event describing that the configuration of the editor has changed.\n */\n export interface IConfigurationChangedEvent {\n readonly canUseLayerHinting: boolean;\n readonly pixelRatio: boolean;\n readonly editorClassName: boolean;\n readonly lineHeight: boolean;\n readonly readOnly: boolean;\n readonly accessibilitySupport: boolean;\n readonly multiCursorModifier: boolean;\n readonly wordSeparators: boolean;\n readonly autoClosingBrackets: boolean;\n readonly autoIndent: boolean;\n readonly useTabStops: boolean;\n readonly tabFocusMode: boolean;\n readonly dragAndDrop: boolean;\n readonly emptySelectionClipboard: boolean;\n readonly layoutInfo: boolean;\n readonly fontInfo: boolean;\n readonly viewInfo: boolean;\n readonly wrappingInfo: boolean;\n readonly contribInfo: boolean;\n }\n\n /**\n * A view zone is a full horizontal rectangle that 'pushes' text down.\n * The editor reserves space for view zones when rendering.\n */\n export interface IViewZone {\n /**\n * The line number after which this zone should appear.\n * Use 0 to place a view zone before the first line number.\n */\n afterLineNumber: number;\n /**\n * The column after which this zone should appear.\n * If not set, the maxLineColumn of `afterLineNumber` will be used.\n */\n afterColumn?: number;\n /**\n * Suppress mouse down events.\n * If set, the editor will attach a mouse down listener to the view zone and .preventDefault on it.\n * Defaults to false\n */\n suppressMouseDown?: boolean;\n /**\n * The height in lines of the view zone.\n * If specified, `heightInPx` will be used instead of this.\n * If neither `heightInPx` nor `heightInLines` is specified, a default of `heightInLines` = 1 will be chosen.\n */\n heightInLines?: number;\n /**\n * The height in px of the view zone.\n * If this is set, the editor will give preference to it rather than `heightInLines` above.\n * If neither `heightInPx` nor `heightInLines` is specified, a default of `heightInLines` = 1 will be chosen.\n */\n heightInPx?: number;\n /**\n * The dom node of the view zone\n */\n domNode: HTMLElement;\n /**\n * An optional dom node for the view zone that will be placed in the margin area.\n */\n marginDomNode?: HTMLElement;\n /**\n * Callback which gives the relative top of the view zone as it appears (taking scrolling into account).\n */\n onDomNodeTop?: (top: number) => void;\n /**\n * Callback which gives the height in pixels of the view zone.\n */\n onComputedHeight?: (height: number) => void;\n }\n\n /**\n * An accessor that allows for zones to be added or removed.\n */\n export interface IViewZoneChangeAccessor {\n /**\n * Create a new view zone.\n * @param zone Zone to create\n * @return A unique identifier to the view zone.\n */\n addZone(zone: IViewZone): number;\n /**\n * Remove a zone\n * @param id A unique identifier to the view zone, as returned by the `addZone` call.\n */\n removeZone(id: number): void;\n /**\n * Change a zone's position.\n * The editor will rescan the `afterLineNumber` and `afterColumn` properties of a view zone.\n */\n layoutZone(id: number): void;\n }\n\n /**\n * A positioning preference for rendering content widgets.\n */\n export enum ContentWidgetPositionPreference {\n /**\n * Place the content widget exactly at a position\n */\n EXACT = 0,\n /**\n * Place the content widget above a position\n */\n ABOVE = 1,\n /**\n * Place the content widget below a position\n */\n BELOW = 2,\n }\n\n /**\n * A position for rendering content widgets.\n */\n export interface IContentWidgetPosition {\n /**\n * Desired position for the content widget.\n * `preference` will also affect the placement.\n */\n position: IPosition;\n /**\n * Placement preference for position, in order of preference.\n */\n preference: ContentWidgetPositionPreference[];\n }\n\n /**\n * A content widget renders inline with the text and can be easily placed 'near' an editor position.\n */\n export interface IContentWidget {\n /**\n * Render this content widget in a location where it could overflow the editor's view dom node.\n */\n allowEditorOverflow?: boolean;\n suppressMouseDown?: boolean;\n /**\n * Get a unique identifier of the content widget.\n */\n getId(): string;\n /**\n * Get the dom node of the content widget.\n */\n getDomNode(): HTMLElement;\n /**\n * Get the placement of the content widget.\n * If null is returned, the content widget will be placed off screen.\n */\n getPosition(): IContentWidgetPosition;\n }\n\n /**\n * A positioning preference for rendering overlay widgets.\n */\n export enum OverlayWidgetPositionPreference {\n /**\n * Position the overlay widget in the top right corner\n */\n TOP_RIGHT_CORNER = 0,\n /**\n * Position the overlay widget in the bottom right corner\n */\n BOTTOM_RIGHT_CORNER = 1,\n /**\n * Position the overlay widget in the top center\n */\n TOP_CENTER = 2,\n }\n\n /**\n * A position for rendering overlay widgets.\n */\n export interface IOverlayWidgetPosition {\n /**\n * The position preference for the overlay widget.\n */\n preference: OverlayWidgetPositionPreference;\n }\n\n /**\n * An overlay widgets renders on top of the text.\n */\n export interface IOverlayWidget {\n /**\n * Get a unique identifier of the overlay widget.\n */\n getId(): string;\n /**\n * Get the dom node of the overlay widget.\n */\n getDomNode(): HTMLElement;\n /**\n * Get the placement of the overlay widget.\n * If null is returned, the overlay widget is responsible to place itself.\n */\n getPosition(): IOverlayWidgetPosition;\n }\n\n /**\n * Type of hit element with the mouse in the editor.\n */\n export enum MouseTargetType {\n /**\n * Mouse is on top of an unknown element.\n */\n UNKNOWN = 0,\n /**\n * Mouse is on top of the textarea used for input.\n */\n TEXTAREA = 1,\n /**\n * Mouse is on top of the glyph margin\n */\n GUTTER_GLYPH_MARGIN = 2,\n /**\n * Mouse is on top of the line numbers\n */\n GUTTER_LINE_NUMBERS = 3,\n /**\n * Mouse is on top of the line decorations\n */\n GUTTER_LINE_DECORATIONS = 4,\n /**\n * Mouse is on top of the whitespace left in the gutter by a view zone.\n */\n GUTTER_VIEW_ZONE = 5,\n /**\n * Mouse is on top of text in the content.\n */\n CONTENT_TEXT = 6,\n /**\n * Mouse is on top of empty space in the content (e.g. after line text or below last line)\n */\n CONTENT_EMPTY = 7,\n /**\n * Mouse is on top of a view zone in the content.\n */\n CONTENT_VIEW_ZONE = 8,\n /**\n * Mouse is on top of a content widget.\n */\n CONTENT_WIDGET = 9,\n /**\n * Mouse is on top of the decorations overview ruler.\n */\n OVERVIEW_RULER = 10,\n /**\n * Mouse is on top of a scrollbar.\n */\n SCROLLBAR = 11,\n /**\n * Mouse is on top of an overlay widget.\n */\n OVERLAY_WIDGET = 12,\n /**\n * Mouse is outside of the editor.\n */\n OUTSIDE_EDITOR = 13,\n }\n\n /**\n * Target hit with the mouse in the editor.\n */\n export interface IMouseTarget {\n /**\n * The target element\n */\n readonly element: Element;\n /**\n * The target type\n */\n readonly type: MouseTargetType;\n /**\n * The 'approximate' editor position\n */\n readonly position: Position;\n /**\n * Desired mouse column (e.g. when position.column gets clamped to text length -- clicking after text on a line).\n */\n readonly mouseColumn: number;\n /**\n * The 'approximate' editor range\n */\n readonly range: Range;\n /**\n * Some extra detail.\n */\n readonly detail: any;\n }\n\n /**\n * A mouse event originating from the editor.\n */\n export interface IEditorMouseEvent {\n readonly event: IMouseEvent;\n readonly target: IMouseTarget;\n }\n\n /**\n * A rich code editor.\n */\n export interface ICodeEditor extends ICommonCodeEditor {\n /**\n * An event emitted on a \"mouseup\".\n * @event\n */\n onMouseUp(listener: (e: IEditorMouseEvent) => void): IDisposable;\n /**\n * An event emitted on a \"mousedown\".\n * @event\n */\n onMouseDown(listener: (e: IEditorMouseEvent) => void): IDisposable;\n /**\n * An event emitted on a \"contextmenu\".\n * @event\n */\n onContextMenu(listener: (e: IEditorMouseEvent) => void): IDisposable;\n /**\n * An event emitted on a \"mousemove\".\n * @event\n */\n onMouseMove(listener: (e: IEditorMouseEvent) => void): IDisposable;\n /**\n * An event emitted on a \"mouseleave\".\n * @event\n */\n onMouseLeave(listener: (e: IEditorMouseEvent) => void): IDisposable;\n /**\n * An event emitted on a \"keyup\".\n * @event\n */\n onKeyUp(listener: (e: IKeyboardEvent) => void): IDisposable;\n /**\n * An event emitted on a \"keydown\".\n * @event\n */\n onKeyDown(listener: (e: IKeyboardEvent) => void): IDisposable;\n /**\n * An event emitted when the layout of the editor has changed.\n * @event\n */\n onDidLayoutChange(listener: (e: EditorLayoutInfo) => void): IDisposable;\n /**\n * An event emitted when the scroll in the editor has changed.\n * @event\n */\n onDidScrollChange(listener: (e: IScrollEvent) => void): IDisposable;\n /**\n * Returns the editor's dom node\n */\n getDomNode(): HTMLElement;\n /**\n * Add a content widget. Widgets must have unique ids, otherwise they will be overwritten.\n */\n addContentWidget(widget: IContentWidget): void;\n /**\n * Layout/Reposition a content widget. This is a ping to the editor to call widget.getPosition()\n * and update appropiately.\n */\n layoutContentWidget(widget: IContentWidget): void;\n /**\n * Remove a content widget.\n */\n removeContentWidget(widget: IContentWidget): void;\n /**\n * Add an overlay widget. Widgets must have unique ids, otherwise they will be overwritten.\n */\n addOverlayWidget(widget: IOverlayWidget): void;\n /**\n * Layout/Reposition an overlay widget. This is a ping to the editor to call widget.getPosition()\n * and update appropiately.\n */\n layoutOverlayWidget(widget: IOverlayWidget): void;\n /**\n * Remove an overlay widget.\n */\n removeOverlayWidget(widget: IOverlayWidget): void;\n /**\n * Change the view zones. View zones are lost when a new model is attached to the editor.\n */\n changeViewZones(callback: (accessor: IViewZoneChangeAccessor) => void): void;\n /**\n * Returns the range that is currently centered in the view port.\n */\n getCenteredRangeInViewport(): Range;\n /**\n * Get the horizontal position (left offset) for the column w.r.t to the beginning of the line.\n * This method works only if the line `lineNumber` is currently rendered (in the editor's viewport).\n * Use this method with caution.\n */\n getOffsetForColumn(lineNumber: number, column: number): number;\n /**\n * Force an editor render now.\n */\n render(): void;\n /**\n * Get the vertical position (top offset) for the line w.r.t. to the first line.\n */\n getTopForLineNumber(lineNumber: number): number;\n /**\n * Get the vertical position (top offset) for the position w.r.t. to the first line.\n */\n getTopForPosition(lineNumber: number, column: number): number;\n /**\n * Get the hit test target at coordinates `clientX` and `clientY`.\n * The coordinates are relative to the top-left of the viewport.\n *\n * @returns Hit test target or null if the coordinates fall outside the editor or the editor has no model.\n */\n getTargetAtClientPoint(clientX: number, clientY: number): IMouseTarget;\n /**\n * Get the visible position for `position`.\n * The result position takes scrolling into account and is relative to the top left corner of the editor.\n * Explanation 1: the results of this method will change for the same `position` if the user scrolls the editor.\n * Explanation 2: the results of this method will not change if the container of the editor gets repositioned.\n * Warning: the results of this method are innacurate for positions that are outside the current editor viewport.\n */\n getScrolledVisiblePosition(position: IPosition): {\n top: number;\n left: number;\n height: number;\n };\n /**\n * Apply the same font settings as the editor to `target`.\n */\n applyFontInfo(target: HTMLElement): void;\n }\n\n /**\n * A rich diff editor.\n */\n export interface IDiffEditor extends ICommonDiffEditor {\n /**\n * @see ICodeEditor.getDomNode\n */\n getDomNode(): HTMLElement;\n }\n\n export class FontInfo extends BareFontInfo {\n readonly _editorStylingBrand: void;\n readonly isTrusted: boolean;\n readonly isMonospace: boolean;\n readonly typicalHalfwidthCharacterWidth: number;\n readonly typicalFullwidthCharacterWidth: number;\n readonly spaceWidth: number;\n readonly maxDigitWidth: number;\n }\n export class BareFontInfo {\n readonly _bareFontInfoBrand: void;\n readonly zoomLevel: number;\n readonly fontFamily: string;\n readonly fontWeight: string;\n readonly fontSize: number;\n readonly lineHeight: number;\n readonly letterSpacing: number;\n }\n}\n\ndeclare module monaco.languages {\n\n\n /**\n * Register information about a new language.\n */\n export function register(language: ILanguageExtensionPoint): void;\n\n /**\n * Get the information of all the registered languages.\n */\n export function getLanguages(): ILanguageExtensionPoint[];\n\n /**\n * An event emitted when a language is first time needed (e.g. a model has it set).\n * @event\n */\n export function onLanguage(languageId: string, callback: () => void): IDisposable;\n\n /**\n * Set the editing configuration for a language.\n */\n export function setLanguageConfiguration(languageId: string, configuration: LanguageConfiguration): IDisposable;\n\n /**\n * A token.\n */\n export interface IToken {\n startIndex: number;\n scopes: string;\n }\n\n /**\n * The result of a line tokenization.\n */\n export interface ILineTokens {\n /**\n * The list of tokens on the line.\n */\n tokens: IToken[];\n /**\n * The tokenization end state.\n * A pointer will be held to this and the object should not be modified by the tokenizer after the pointer is returned.\n */\n endState: IState;\n }\n\n /**\n * A \"manual\" provider of tokens.\n */\n export interface TokensProvider {\n /**\n * The initial state of a language. Will be the state passed in to tokenize the first line.\n */\n getInitialState(): IState;\n /**\n * Tokenize a line given the state at the beginning of the line.\n */\n tokenize(line: string, state: IState): ILineTokens;\n }\n\n /**\n * Set the tokens provider for a language (manual implementation).\n */\n export function setTokensProvider(languageId: string, provider: TokensProvider): IDisposable;\n\n /**\n * Set the tokens provider for a language (monarch implementation).\n */\n export function setMonarchTokensProvider(languageId: string, languageDef: IMonarchLanguage): IDisposable;\n\n /**\n * Register a reference provider (used by e.g. reference search).\n */\n export function registerReferenceProvider(languageId: string, provider: ReferenceProvider): IDisposable;\n\n /**\n * Register a rename provider (used by e.g. rename symbol).\n */\n export function registerRenameProvider(languageId: string, provider: RenameProvider): IDisposable;\n\n /**\n * Register a signature help provider (used by e.g. paremeter hints).\n */\n export function registerSignatureHelpProvider(languageId: string, provider: SignatureHelpProvider): IDisposable;\n\n /**\n * Register a hover provider (used by e.g. editor hover).\n */\n export function registerHoverProvider(languageId: string, provider: HoverProvider): IDisposable;\n\n /**\n * Register a document symbol provider (used by e.g. outline).\n */\n export function registerDocumentSymbolProvider(languageId: string, provider: DocumentSymbolProvider): IDisposable;\n\n /**\n * Register a document highlight provider (used by e.g. highlight occurrences).\n */\n export function registerDocumentHighlightProvider(languageId: string, provider: DocumentHighlightProvider): IDisposable;\n\n /**\n * Register a definition provider (used by e.g. go to definition).\n */\n export function registerDefinitionProvider(languageId: string, provider: DefinitionProvider): IDisposable;\n\n /**\n * Register a implementation provider (used by e.g. go to implementation).\n */\n export function registerImplementationProvider(languageId: string, provider: ImplementationProvider): IDisposable;\n\n /**\n * Register a type definition provider (used by e.g. go to type definition).\n */\n export function registerTypeDefinitionProvider(languageId: string, provider: TypeDefinitionProvider): IDisposable;\n\n /**\n * Register a code lens provider (used by e.g. inline code lenses).\n */\n export function registerCodeLensProvider(languageId: string, provider: CodeLensProvider): IDisposable;\n\n /**\n * Register a code action provider (used by e.g. quick fix).\n */\n export function registerCodeActionProvider(languageId: string, provider: CodeActionProvider): IDisposable;\n\n /**\n * Register a formatter that can handle only entire models.\n */\n export function registerDocumentFormattingEditProvider(languageId: string, provider: DocumentFormattingEditProvider): IDisposable;\n\n /**\n * Register a formatter that can handle a range inside a model.\n */\n export function registerDocumentRangeFormattingEditProvider(languageId: string, provider: DocumentRangeFormattingEditProvider): IDisposable;\n\n /**\n * Register a formatter than can do formatting as the user types.\n */\n export function registerOnTypeFormattingEditProvider(languageId: string, provider: OnTypeFormattingEditProvider): IDisposable;\n\n /**\n * Register a link provider that can find links in text.\n */\n export function registerLinkProvider(languageId: string, provider: LinkProvider): IDisposable;\n\n /**\n * Register a completion item provider (use by e.g. suggestions).\n */\n export function registerCompletionItemProvider(languageId: string, provider: CompletionItemProvider): IDisposable;\n\n /**\n * Contains additional diagnostic information about the context in which\n * a [code action](#CodeActionProvider.provideCodeActions) is run.\n */\n export interface CodeActionContext {\n /**\n * An array of diagnostics.\n *\n * @readonly\n */\n readonly markers: editor.IMarkerData[];\n }\n\n /**\n * The code action interface defines the contract between extensions and\n * the [light bulb](https://code.visualstudio.com/docs/editor/editingevolved#_code-action) feature.\n */\n export interface CodeActionProvider {\n /**\n * Provide commands for the given document and range.\n */\n provideCodeActions(model: editor.IReadOnlyModel, range: Range, context: CodeActionContext, token: CancellationToken): Command[] | Thenable;\n }\n\n /**\n * Completion item kinds.\n */\n export enum CompletionItemKind {\n Text = 0,\n Method = 1,\n Function = 2,\n Constructor = 3,\n Field = 4,\n Variable = 5,\n Class = 6,\n Interface = 7,\n Module = 8,\n Property = 9,\n Unit = 10,\n Value = 11,\n Enum = 12,\n Keyword = 13,\n Snippet = 14,\n Color = 15,\n File = 16,\n Reference = 17,\n Folder = 18,\n }\n\n /**\n * A snippet string is a template which allows to insert text\n * and to control the editor cursor when insertion happens.\n *\n * A snippet can define tab stops and placeholders with `$1`, `$2`\n * and `${3:foo}`. `$0` defines the final tab stop, it defaults to\n * the end of the snippet. Variables are defined with `$name` and\n * `${name:default value}`. The full snippet syntax is documented\n * [here](http://code.visualstudio.com/docs/editor/userdefinedsnippets#_creating-your-own-snippets).\n */\n export interface SnippetString {\n /**\n * The snippet string.\n */\n value: string;\n }\n\n /**\n * A completion item represents a text snippet that is\n * proposed to complete text that is being typed.\n */\n export interface CompletionItem {\n /**\n * The label of this completion item. By default\n * this is also the text that is inserted when selecting\n * this completion.\n */\n label: string;\n /**\n * The kind of this completion item. Based on the kind\n * an icon is chosen by the editor.\n */\n kind: CompletionItemKind;\n /**\n * A human-readable string with additional information\n * about this item, like type or symbol information.\n */\n detail?: string;\n /**\n * A human-readable string that represents a doc-comment.\n */\n documentation?: string;\n /**\n * A string that should be used when comparing this item\n * with other items. When `falsy` the [label](#CompletionItem.label)\n * is used.\n */\n sortText?: string;\n /**\n * A string that should be used when filtering a set of\n * completion items. When `falsy` the [label](#CompletionItem.label)\n * is used.\n */\n filterText?: string;\n /**\n * A string or snippet that should be inserted in a document when selecting\n * this completion. When `falsy` the [label](#CompletionItem.label)\n * is used.\n */\n insertText?: string | SnippetString;\n /**\n * A range of text that should be replaced by this completion item.\n *\n * Defaults to a range from the start of the [current word](#TextDocument.getWordRangeAtPosition) to the\n * current position.\n *\n * *Note:* The range must be a [single line](#Range.isSingleLine) and it must\n * [contain](#Range.contains) the position at which completion has been [requested](#CompletionItemProvider.provideCompletionItems).\n */\n range?: Range;\n /**\n * @deprecated **Deprecated** in favor of `CompletionItem.insertText` and `CompletionItem.range`.\n *\n * ~~An [edit](#TextEdit) which is applied to a document when selecting\n * this completion. When an edit is provided the value of\n * [insertText](#CompletionItem.insertText) is ignored.~~\n *\n * ~~The [range](#Range) of the edit must be single-line and on the same\n * line completions were [requested](#CompletionItemProvider.provideCompletionItems) at.~~\n */\n textEdit?: editor.ISingleEditOperation;\n }\n\n /**\n * Represents a collection of [completion items](#CompletionItem) to be presented\n * in the editor.\n */\n export interface CompletionList {\n /**\n * This list it not complete. Further typing should result in recomputing\n * this list.\n */\n isIncomplete?: boolean;\n /**\n * The completion items.\n */\n items: CompletionItem[];\n }\n\n /**\n * The completion item provider interface defines the contract between extensions and\n * the [IntelliSense](https://code.visualstudio.com/docs/editor/intellisense).\n *\n * When computing *complete* completion items is expensive, providers can optionally implement\n * the `resolveCompletionItem`-function. In that case it is enough to return completion\n * items with a [label](#CompletionItem.label) from the\n * [provideCompletionItems](#CompletionItemProvider.provideCompletionItems)-function. Subsequently,\n * when a completion item is shown in the UI and gains focus this provider is asked to resolve\n * the item, like adding [doc-comment](#CompletionItem.documentation) or [details](#CompletionItem.detail).\n */\n export interface CompletionItemProvider {\n triggerCharacters?: string[];\n /**\n * Provide completion items for the given position and document.\n */\n provideCompletionItems(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): CompletionItem[] | Thenable | CompletionList | Thenable;\n /**\n * Given a completion item fill in more data, like [doc-comment](#CompletionItem.documentation)\n * or [details](#CompletionItem.detail).\n *\n * The editor will only resolve a completion item once.\n */\n resolveCompletionItem?(item: CompletionItem, token: CancellationToken): CompletionItem | Thenable;\n }\n\n /**\n * Describes how comments for a language work.\n */\n export interface CommentRule {\n /**\n * The line comment token, like `// this is a comment`\n */\n lineComment?: string;\n /**\n * The block comment character pair, like `/* block comment */`\n */\n blockComment?: CharacterPair;\n }\n\n /**\n * The language configuration interface defines the contract between extensions and\n * various editor features, like automatic bracket insertion, automatic indentation etc.\n */\n export interface LanguageConfiguration {\n /**\n * The language's comment settings.\n */\n comments?: CommentRule;\n /**\n * The language's brackets.\n * This configuration implicitly affects pressing Enter around these brackets.\n */\n brackets?: CharacterPair[];\n /**\n * The language's word definition.\n * If the language supports Unicode identifiers (e.g. JavaScript), it is preferable\n * to provide a word definition that uses exclusion of known separators.\n * e.g.: A regex that matches anything except known separators (and dot is allowed to occur in a floating point number):\n * /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g\n */\n wordPattern?: RegExp;\n /**\n * The language's indentation settings.\n */\n indentationRules?: IndentationRule;\n /**\n * The language's rules to be evaluated when pressing Enter.\n */\n onEnterRules?: OnEnterRule[];\n /**\n * The language's auto closing pairs. The 'close' character is automatically inserted with the\n * 'open' character is typed. If not set, the configured brackets will be used.\n */\n autoClosingPairs?: IAutoClosingPairConditional[];\n /**\n * The language's surrounding pairs. When the 'open' character is typed on a selection, the\n * selected string is surrounded by the open and close characters. If not set, the autoclosing pairs\n * settings will be used.\n */\n surroundingPairs?: IAutoClosingPair[];\n /**\n * **Deprecated** Do not use.\n *\n * @deprecated Will be replaced by a better API soon.\n */\n __electricCharacterSupport?: IBracketElectricCharacterContribution;\n }\n\n /**\n * Describes indentation rules for a language.\n */\n export interface IndentationRule {\n /**\n * If a line matches this pattern, then all the lines after it should be unindendented once (until another rule matches).\n */\n decreaseIndentPattern: RegExp;\n /**\n * If a line matches this pattern, then all the lines after it should be indented once (until another rule matches).\n */\n increaseIndentPattern: RegExp;\n /**\n * If a line matches this pattern, then **only the next line** after it should be indented once.\n */\n indentNextLinePattern?: RegExp;\n /**\n * If a line matches this pattern, then its indentation should not be changed and it should not be evaluated against the other rules.\n */\n unIndentedLinePattern?: RegExp;\n }\n\n /**\n * Describes a rule to be evaluated when pressing Enter.\n */\n export interface OnEnterRule {\n /**\n * This rule will only execute if the text before the cursor matches this regular expression.\n */\n beforeText: RegExp;\n /**\n * This rule will only execute if the text after the cursor matches this regular expression.\n */\n afterText?: RegExp;\n /**\n * The action to execute.\n */\n action: EnterAction;\n }\n\n export interface IBracketElectricCharacterContribution {\n docComment?: IDocComment;\n }\n\n /**\n * Definition of documentation comments (e.g. Javadoc/JSdoc)\n */\n export interface IDocComment {\n /**\n * The string that starts a doc comment (e.g. '/**')\n */\n open: string;\n /**\n * The string that appears on the last line and closes the doc comment (e.g. ' * /').\n */\n close: string;\n }\n\n /**\n * A tuple of two characters, like a pair of\n * opening and closing brackets.\n */\n export type CharacterPair = [string, string];\n\n export interface IAutoClosingPair {\n open: string;\n close: string;\n }\n\n export interface IAutoClosingPairConditional extends IAutoClosingPair {\n notIn?: string[];\n }\n\n /**\n * Describes what to do with the indentation when pressing Enter.\n */\n export enum IndentAction {\n /**\n * Insert new line and copy the previous line's indentation.\n */\n None = 0,\n /**\n * Insert new line and indent once (relative to the previous line's indentation).\n */\n Indent = 1,\n /**\n * Insert two new lines:\n * - the first one indented which will hold the cursor\n * - the second one at the same indentation level\n */\n IndentOutdent = 2,\n /**\n * Insert new line and outdent once (relative to the previous line's indentation).\n */\n Outdent = 3,\n }\n\n /**\n * Describes what to do when pressing Enter.\n */\n export interface EnterAction {\n /**\n * Describe what to do with the indentation.\n */\n indentAction: IndentAction;\n /**\n * Describe whether to outdent current line.\n */\n outdentCurrentLine?: boolean;\n /**\n * Describes text to be appended after the new line and after the indentation.\n */\n appendText?: string;\n /**\n * Describes the number of characters to remove from the new line's indentation.\n */\n removeText?: number;\n }\n\n /**\n * The state of the tokenizer between two lines.\n * It is useful to store flags such as in multiline comment, etc.\n * The model will clone the previous line's state and pass it in to tokenize the next line.\n */\n export interface IState {\n clone(): IState;\n equals(other: IState): boolean;\n }\n\n /**\n * A hover represents additional information for a symbol or word. Hovers are\n * rendered in a tooltip-like widget.\n */\n export interface Hover {\n /**\n * The contents of this hover.\n */\n contents: MarkedString[];\n /**\n * The range to which this hover applies. When missing, the\n * editor will use the range at the current position or the\n * current position itself.\n */\n range: IRange;\n }\n\n /**\n * The hover provider interface defines the contract between extensions and\n * the [hover](https://code.visualstudio.com/docs/editor/intellisense)-feature.\n */\n export interface HoverProvider {\n /**\n * Provide a hover for the given position and document. Multiple hovers at the same\n * position will be merged by the editor. A hover can have a range which defaults\n * to the word range at the position when omitted.\n */\n provideHover(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Hover | Thenable;\n }\n\n /**\n * Represents a parameter of a callable-signature. A parameter can\n * have a label and a doc-comment.\n */\n export interface ParameterInformation {\n /**\n * The label of this signature. Will be shown in\n * the UI.\n */\n label: string;\n /**\n * The human-readable doc-comment of this signature. Will be shown\n * in the UI but can be omitted.\n */\n documentation?: string;\n }\n\n /**\n * Represents the signature of something callable. A signature\n * can have a label, like a function-name, a doc-comment, and\n * a set of parameters.\n */\n export interface SignatureInformation {\n /**\n * The label of this signature. Will be shown in\n * the UI.\n */\n label: string;\n /**\n * The human-readable doc-comment of this signature. Will be shown\n * in the UI but can be omitted.\n */\n documentation?: string;\n /**\n * The parameters of this signature.\n */\n parameters: ParameterInformation[];\n }\n\n /**\n * Signature help represents the signature of something\n * callable. There can be multiple signatures but only one\n * active and only one active parameter.\n */\n export interface SignatureHelp {\n /**\n * One or more signatures.\n */\n signatures: SignatureInformation[];\n /**\n * The active signature.\n */\n activeSignature: number;\n /**\n * The active parameter of the active signature.\n */\n activeParameter: number;\n }\n\n /**\n * The signature help provider interface defines the contract between extensions and\n * the [parameter hints](https://code.visualstudio.com/docs/editor/intellisense)-feature.\n */\n export interface SignatureHelpProvider {\n signatureHelpTriggerCharacters: string[];\n /**\n * Provide help for the signature at the given position and document.\n */\n provideSignatureHelp(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): SignatureHelp | Thenable;\n }\n\n /**\n * A document highlight kind.\n */\n export enum DocumentHighlightKind {\n /**\n * A textual occurrence.\n */\n Text = 0,\n /**\n * Read-access of a symbol, like reading a variable.\n */\n Read = 1,\n /**\n * Write-access of a symbol, like writing to a variable.\n */\n Write = 2,\n }\n\n /**\n * A document highlight is a range inside a text document which deserves\n * special attention. Usually a document highlight is visualized by changing\n * the background color of its range.\n */\n export interface DocumentHighlight {\n /**\n * The range this highlight applies to.\n */\n range: IRange;\n /**\n * The highlight kind, default is [text](#DocumentHighlightKind.Text).\n */\n kind: DocumentHighlightKind;\n }\n\n /**\n * The document highlight provider interface defines the contract between extensions and\n * the word-highlight-feature.\n */\n export interface DocumentHighlightProvider {\n /**\n * Provide a set of document highlights, like all occurrences of a variable or\n * all exit-points of a function.\n */\n provideDocumentHighlights(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): DocumentHighlight[] | Thenable;\n }\n\n /**\n * Value-object that contains additional information when\n * requesting references.\n */\n export interface ReferenceContext {\n /**\n * Include the declaration of the current symbol.\n */\n includeDeclaration: boolean;\n }\n\n /**\n * The reference provider interface defines the contract between extensions and\n * the [find references](https://code.visualstudio.com/docs/editor/editingevolved#_peek)-feature.\n */\n export interface ReferenceProvider {\n /**\n * Provide a set of project-wide references for the given position and document.\n */\n provideReferences(model: editor.IReadOnlyModel, position: Position, context: ReferenceContext, token: CancellationToken): Location[] | Thenable;\n }\n\n /**\n * Represents a location inside a resource, such as a line\n * inside a text file.\n */\n export interface Location {\n /**\n * The resource identifier of this location.\n */\n uri: Uri;\n /**\n * The document range of this locations.\n */\n range: IRange;\n }\n\n /**\n * The definition of a symbol represented as one or many [locations](#Location).\n * For most programming languages there is only one location at which a symbol is\n * defined.\n */\n export type Definition = Location | Location[];\n\n /**\n * The definition provider interface defines the contract between extensions and\n * the [go to definition](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-definition)\n * and peek definition features.\n */\n export interface DefinitionProvider {\n /**\n * Provide the definition of the symbol at the given position and document.\n */\n provideDefinition(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Definition | Thenable;\n }\n\n /**\n * The implementation provider interface defines the contract between extensions and\n * the go to implementation feature.\n */\n export interface ImplementationProvider {\n /**\n * Provide the implementation of the symbol at the given position and document.\n */\n provideImplementation(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Definition | Thenable;\n }\n\n /**\n * The type definition provider interface defines the contract between extensions and\n * the go to type definition feature.\n */\n export interface TypeDefinitionProvider {\n /**\n * Provide the type definition of the symbol at the given position and document.\n */\n provideTypeDefinition(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Definition | Thenable;\n }\n\n /**\n * A symbol kind.\n */\n export enum SymbolKind {\n File = 0,\n Module = 1,\n Namespace = 2,\n Package = 3,\n Class = 4,\n Method = 5,\n Property = 6,\n Field = 7,\n Constructor = 8,\n Enum = 9,\n Interface = 10,\n Function = 11,\n Variable = 12,\n Constant = 13,\n String = 14,\n Number = 15,\n Boolean = 16,\n Array = 17,\n Object = 18,\n Key = 19,\n Null = 20,\n EnumMember = 21,\n Struct = 22,\n Event = 23,\n Operator = 24,\n TypeParameter = 25,\n }\n\n /**\n * Represents information about programming constructs like variables, classes,\n * interfaces etc.\n */\n export interface SymbolInformation {\n /**\n * The name of this symbol.\n */\n name: string;\n /**\n * The name of the symbol containing this symbol.\n */\n containerName?: string;\n /**\n * The kind of this symbol.\n */\n kind: SymbolKind;\n /**\n * The location of this symbol.\n */\n location: Location;\n }\n\n /**\n * The document symbol provider interface defines the contract between extensions and\n * the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_goto-symbol)-feature.\n */\n export interface DocumentSymbolProvider {\n /**\n * Provide symbol information for the given document.\n */\n provideDocumentSymbols(model: editor.IReadOnlyModel, token: CancellationToken): SymbolInformation[] | Thenable;\n }\n\n export interface TextEdit {\n range: IRange;\n text: string;\n eol?: editor.EndOfLineSequence;\n }\n\n /**\n * Interface used to format a model\n */\n export interface FormattingOptions {\n /**\n * Size of a tab in spaces.\n */\n tabSize: number;\n /**\n * Prefer spaces over tabs.\n */\n insertSpaces: boolean;\n }\n\n /**\n * The document formatting provider interface defines the contract between extensions and\n * the formatting-feature.\n */\n export interface DocumentFormattingEditProvider {\n /**\n * Provide formatting edits for a whole document.\n */\n provideDocumentFormattingEdits(model: editor.IReadOnlyModel, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;\n }\n\n /**\n * The document formatting provider interface defines the contract between extensions and\n * the formatting-feature.\n */\n export interface DocumentRangeFormattingEditProvider {\n /**\n * Provide formatting edits for a range in a document.\n *\n * The given range is a hint and providers can decide to format a smaller\n * or larger range. Often this is done by adjusting the start and end\n * of the range to full syntax nodes.\n */\n provideDocumentRangeFormattingEdits(model: editor.IReadOnlyModel, range: Range, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;\n }\n\n /**\n * The document formatting provider interface defines the contract between extensions and\n * the formatting-feature.\n */\n export interface OnTypeFormattingEditProvider {\n autoFormatTriggerCharacters: string[];\n /**\n * Provide formatting edits after a character has been typed.\n *\n * The given position and character should hint to the provider\n * what range the position to expand to, like find the matching `{`\n * when `}` has been entered.\n */\n provideOnTypeFormattingEdits(model: editor.IReadOnlyModel, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;\n }\n\n /**\n * A link inside the editor.\n */\n export interface ILink {\n range: IRange;\n url: string;\n }\n\n /**\n * A provider of links.\n */\n export interface LinkProvider {\n provideLinks(model: editor.IReadOnlyModel, token: CancellationToken): ILink[] | Thenable;\n resolveLink?: (link: ILink, token: CancellationToken) => ILink | Thenable;\n }\n\n export interface IResourceEdit {\n resource: Uri;\n range: IRange;\n newText: string;\n }\n\n export interface WorkspaceEdit {\n edits: IResourceEdit[];\n rejectReason?: string;\n }\n\n export interface RenameProvider {\n provideRenameEdits(model: editor.IReadOnlyModel, position: Position, newName: string, token: CancellationToken): WorkspaceEdit | Thenable;\n }\n\n export interface Command {\n id: string;\n title: string;\n tooltip?: string;\n arguments?: any[];\n }\n\n export interface ICodeLensSymbol {\n range: IRange;\n id?: string;\n command?: Command;\n }\n\n export interface CodeLensProvider {\n onDidChange?: IEvent;\n provideCodeLenses(model: editor.IReadOnlyModel, token: CancellationToken): ICodeLensSymbol[] | Thenable;\n resolveCodeLens?(model: editor.IReadOnlyModel, codeLens: ICodeLensSymbol, token: CancellationToken): ICodeLensSymbol | Thenable;\n }\n\n export interface ILanguageExtensionPoint {\n id: string;\n extensions?: string[];\n filenames?: string[];\n filenamePatterns?: string[];\n firstLine?: string;\n aliases?: string[];\n mimetypes?: string[];\n configuration?: string;\n }\n /**\n * A Monarch language definition\n */\n export interface IMonarchLanguage {\n /**\n * map from string to ILanguageRule[]\n */\n tokenizer: {\n [name: string]: IMonarchLanguageRule[];\n };\n /**\n * is the language case insensitive?\n */\n ignoreCase?: boolean;\n /**\n * if no match in the tokenizer assign this token class (default 'source')\n */\n defaultToken?: string;\n /**\n * for example [['{','}','delimiter.curly']]\n */\n brackets?: IMonarchLanguageBracket[];\n /**\n * start symbol in the tokenizer (by default the first entry is used)\n */\n start?: string;\n /**\n * attach this to every token class (by default '.' + name)\n */\n tokenPostfix: string;\n }\n\n /**\n * A rule is either a regular expression and an action\n * \t\tshorthands: [reg,act] == { regex: reg, action: act}\n *\t\tand : [reg,act,nxt] == { regex: reg, action: act{ next: nxt }}\n */\n export interface IMonarchLanguageRule {\n /**\n * match tokens\n */\n regex?: string | RegExp;\n /**\n * action to take on match\n */\n action?: IMonarchLanguageAction;\n /**\n * or an include rule. include all rules from the included state\n */\n include?: string;\n }\n\n /**\n * An action is either an array of actions...\n * ... or a case statement with guards...\n * ... or a basic action with a token value.\n */\n export interface IMonarchLanguageAction {\n /**\n * array of actions for each parenthesized match group\n */\n group?: IMonarchLanguageAction[];\n /**\n * map from string to ILanguageAction\n */\n cases?: Object;\n /**\n * token class (ie. css class) (or \"@brackets\" or \"@rematch\")\n */\n token?: string;\n /**\n * the next state to push, or \"@push\", \"@pop\", \"@popall\"\n */\n next?: string;\n /**\n * switch to this state\n */\n switchTo?: string;\n /**\n * go back n characters in the stream\n */\n goBack?: number;\n /**\n * @open or @close\n */\n bracket?: string;\n /**\n * switch to embedded language (useing the mimetype) or get out using \"@pop\"\n */\n nextEmbedded?: string;\n /**\n * log a message to the browser console window\n */\n log?: string;\n }\n\n /**\n * This interface can be shortened as an array, ie. ['{','}','delimiter.curly']\n */\n export interface IMonarchLanguageBracket {\n /**\n * open bracket\n */\n open: string;\n /**\n * closeing bracket\n */\n close: string;\n /**\n * token class\n */\n token: string;\n }\n\n}\n\ndeclare module monaco.worker {\n\n\n export interface IMirrorModel {\n readonly uri: Uri;\n readonly version: number;\n getValue(): string;\n }\n\n export interface IWorkerContext {\n /**\n * Get all available mirror models in this worker.\n */\n getMirrorModels(): IMirrorModel[];\n }\n\n}\n\n\ndeclare module monaco.languages.typescript {\n\n enum ModuleKind {\n None = 0,\n CommonJS = 1,\n AMD = 2,\n UMD = 3,\n System = 4,\n ES2015 = 5,\n }\n enum JsxEmit {\n None = 0,\n Preserve = 1,\n React = 2,\n }\n enum NewLineKind {\n CarriageReturnLineFeed = 0,\n LineFeed = 1,\n }\n\n enum ScriptTarget {\n ES3 = 0,\n ES5 = 1,\n ES2015 = 2,\n ES2016 = 3,\n ES2017 = 4,\n ESNext = 5,\n Latest = 5,\n }\n\n export enum ModuleResolutionKind {\n Classic = 1,\n NodeJs = 2,\n }\n\n type CompilerOptionsValue = string | number | boolean | (string | number)[] | string[];\n interface CompilerOptions {\n allowJs?: boolean;\n allowSyntheticDefaultImports?: boolean;\n allowUnreachableCode?: boolean;\n allowUnusedLabels?: boolean;\n alwaysStrict?: boolean;\n baseUrl?: string;\n charset?: string;\n declaration?: boolean;\n declarationDir?: string;\n disableSizeLimit?: boolean;\n emitBOM?: boolean;\n emitDecoratorMetadata?: boolean;\n experimentalDecorators?: boolean;\n forceConsistentCasingInFileNames?: boolean;\n importHelpers?: boolean;\n inlineSourceMap?: boolean;\n inlineSources?: boolean;\n isolatedModules?: boolean;\n jsx?: JsxEmit;\n lib?: string[];\n locale?: string;\n mapRoot?: string;\n maxNodeModuleJsDepth?: number;\n module?: ModuleKind;\n moduleResolution?: ModuleResolutionKind;\n newLine?: NewLineKind;\n noEmit?: boolean;\n noEmitHelpers?: boolean;\n noEmitOnError?: boolean;\n noErrorTruncation?: boolean;\n noFallthroughCasesInSwitch?: boolean;\n noImplicitAny?: boolean;\n noImplicitReturns?: boolean;\n noImplicitThis?: boolean;\n noUnusedLocals?: boolean;\n noUnusedParameters?: boolean;\n noImplicitUseStrict?: boolean;\n noLib?: boolean;\n noResolve?: boolean;\n out?: string;\n outDir?: string;\n outFile?: string;\n preserveConstEnums?: boolean;\n project?: string;\n reactNamespace?: string;\n jsxFactory?: string;\n removeComments?: boolean;\n rootDir?: string;\n rootDirs?: string[];\n skipLibCheck?: boolean;\n skipDefaultLibCheck?: boolean;\n sourceMap?: boolean;\n sourceRoot?: string;\n strictNullChecks?: boolean;\n suppressExcessPropertyErrors?: boolean;\n suppressImplicitAnyIndexErrors?: boolean;\n target?: ScriptTarget;\n traceResolution?: boolean;\n types?: string[];\n /** Paths used to compute primary types search locations */\n typeRoots?: string[];\n [option: string]: CompilerOptionsValue | undefined;\n }\n\n export interface DiagnosticsOptions {\n noSemanticValidation?: boolean;\n noSyntaxValidation?: boolean;\n }\n\n export interface LanguageServiceDefaults {\n /**\n * Add an additional source file to the language service. Use this\n * for typescript (definition) files that won't be loaded as editor\n * document, like `jquery.d.ts`.\n *\n * @param content The file content\n * @param filePath An optional file path\n * @returns A disposabled which will remove the file from the\n * language service upon disposal.\n */\n addExtraLib(content: string, filePath?: string): IDisposable;\n\n /**\n * Set TypeScript compiler options.\n */\n setCompilerOptions(options: CompilerOptions): void;\n\n /**\n * Configure whether syntactic and/or semantic validation should\n * be performed\n */\n setDiagnosticsOptions(options: DiagnosticsOptions): void;\n\n /**\n * Configure when the worker shuts down. By default that is 2mins.\n *\n * @param value The maximun idle time in milliseconds. Values less than one\n * mean never shut down.\n */\n setMaximunWorkerIdleTime(value: number): void;\n\n /**\n * Configure if all existing models should be eagerly sync'd\n * to the worker on start or restart.\n */\n setEagerModelSync(value: boolean): void;\n }\n\n export var typescriptDefaults: LanguageServiceDefaults;\n export var javascriptDefaults: LanguageServiceDefaults;\n\n export var getTypeScriptWorker: () => monaco.Promise;\n export var getJavaScriptWorker: () => monaco.Promise;\n}\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 *--------------------------------------------------------------------------------------------*/\ndeclare module monaco.languages.css {\n export interface DiagnosticsOptions {\n readonly validate?: boolean;\n readonly lint?: {\n readonly compatibleVendorPrefixes?: 'ignore' | 'warning' | 'error',\n readonly vendorPrefix?: 'ignore' | 'warning' | 'error',\n readonly duplicateProperties?: 'ignore' | 'warning' | 'error',\n readonly emptyRules?: 'ignore' | 'warning' | 'error',\n readonly importStatement?: 'ignore' | 'warning' | 'error',\n readonly boxModel?: 'ignore' | 'warning' | 'error',\n readonly universalSelector?: 'ignore' | 'warning' | 'error',\n readonly zeroUnits?: 'ignore' | 'warning' | 'error',\n readonly fontFaceProperties?: 'ignore' | 'warning' | 'error',\n readonly hexColorLength?: 'ignore' | 'warning' | 'error',\n readonly argumentsInColorFunction?: 'ignore' | 'warning' | 'error',\n readonly unknownProperties?: 'ignore' | 'warning' | 'error',\n readonly ieHack?: 'ignore' | 'warning' | 'error',\n readonly unknownVendorSpecificProperties?: 'ignore' | 'warning' | 'error',\n readonly propertyIgnoredDueToDisplay?: 'ignore' | 'warning' | 'error',\n readonly important?: 'ignore' | 'warning' | 'error',\n readonly float?: 'ignore' | 'warning' | 'error',\n readonly idSelector?: 'ignore' | 'warning' | 'error'\n }\n }\n\n export interface LanguageServiceDefaults {\n readonly onDidChange: IEvent;\n readonly diagnosticsOptions: DiagnosticsOptions;\n setDiagnosticsOptions(options: DiagnosticsOptions): void;\n }\n\n export var cssDefaults: LanguageServiceDefaults;\n export var lessDefaults: LanguageServiceDefaults;\n export var scssDefaults: LanguageServiceDefaults;\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\ndeclare module monaco.languages.json {\n export interface DiagnosticsOptions {\n /**\n * If set, the validator will be enabled and perform syntax validation as well as schema based validation.\n */\n readonly validate?: boolean;\n /**\n * If set, comments are tolerated. If set to false, syntax errors will be emmited for comments.\n */\n readonly allowComments?: boolean;\n /**\n * A list of known schemas and/or associations of schemas to file names.\n */\n readonly schemas?: {\n /**\n * The URI of the schema, which is also the identifier of the schema.\n */\n readonly uri: string;\n /**\n * A list of file names that are associated to the schema. The '*' wildcard can be used. For example '*.schema.json', 'package.json'\n */\n readonly fileMatch?: string[];\n /**\n * The schema for the given URI.\n */\n readonly schema?: any;\n }[];\n }\n\n export interface LanguageServiceDefaults {\n readonly onDidChange: IEvent;\n readonly diagnosticsOptions: DiagnosticsOptions;\n setDiagnosticsOptions(options: DiagnosticsOptions): void;\n }\n\n export var jsonDefaults: LanguageServiceDefaults;\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\ndeclare module monaco.languages.html {\n export interface HTMLFormatConfiguration {\n readonly tabSize: number;\n readonly insertSpaces: boolean;\n readonly wrapLineLength: number;\n readonly unformatted: string;\n readonly contentUnformatted: string;\n readonly indentInnerHtml: boolean;\n readonly preserveNewLines: boolean;\n readonly maxPreserveNewLines: number;\n readonly indentHandlebars: boolean;\n readonly endWithNewline: boolean;\n readonly extraLiners: string;\n readonly wrapAttributes: 'auto' | 'force' | 'force-aligned' | 'force-expand-multiline';\n }\n\n export interface CompletionConfiguration {\n [provider: string]: boolean;\n }\n\n export interface Options {\n /**\n * If set, comments are tolerated. If set to false, syntax errors will be emmited for comments.\n */\n readonly format?: HTMLFormatConfiguration;\n /**\n * A list of known schemas and/or associations of schemas to file names.\n */\n readonly suggest?: CompletionConfiguration;\n }\n\n export interface LanguageServiceDefaults {\n readonly onDidChange: IEvent;\n readonly options: Options;\n setOptions(options: Options): void;\n }\n\n export var htmlDefaults: LanguageServiceDefaults;\n export var handlebarDefaults: LanguageServiceDefaults;\n export var razorDefaults: LanguageServiceDefaults;\n}",e),dd("Mocha",'// Type definitions for mocha 2.2.5\n// Project: http://mochajs.org/\n// Definitions by: Kazi Manzur Rashid , otiai10 , jt000 , Vadim Macagon \n// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped\n\ninterface MochaSetupOptions {\n //milliseconds to wait before considering a test slow\n slow?: number;\n\n // timeout in milliseconds\n timeout?: number;\n\n // ui name "bdd", "tdd", "exports" etc\n ui?: string;\n\n //array of accepted globals\n globals?: any[];\n\n // reporter instance (function or string), defaults to `mocha.reporters.Spec`\n reporter?: string | ReporterConstructor;\n\n // bail on the first test failure\n bail?: boolean;\n\n // ignore global leaks\n ignoreLeaks?: boolean;\n\n // grep string or regexp to filter tests with\n grep?: any;\n\n // require modules before running tests\n require?: string[];\n}\n\ndeclare var mocha: Mocha;\ndeclare var describe: Mocha.IContextDefinition;\ndeclare var xdescribe: Mocha.IContextDefinition;\n// alias for `describe`\ndeclare var context: Mocha.IContextDefinition;\n// alias for `describe`\ndeclare var suite: Mocha.IContextDefinition;\ndeclare var it: Mocha.ITestDefinition;\ndeclare var xit: Mocha.ITestDefinition;\n// alias for `it`\ndeclare var test: Mocha.ITestDefinition;\ndeclare var specify: Mocha.ITestDefinition;\n\n// Used with the --delay flag; see https://mochajs.org/#hooks\ndeclare function run(): void;\n\ninterface MochaDone {\n (error?: any): any;\n}\n\ndeclare function setup(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;\ndeclare function teardown(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;\ndeclare function suiteSetup(callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;\ndeclare function suiteTeardown(callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;\ndeclare function before(callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;\ndeclare function before(description: string, callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;\ndeclare function after(callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;\ndeclare function after(description: string, callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;\ndeclare function beforeEach(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;\ndeclare function beforeEach(description: string, callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;\ndeclare function afterEach(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;\ndeclare function afterEach(description: string, callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;\n\ninterface ReporterConstructor {\n new(runner: Mocha.IRunner, options: any): any;\n}\n\ndeclare class Mocha {\n currentTest: Mocha.ITestDefinition;\n constructor(options?: {\n grep?: RegExp;\n ui?: string;\n reporter?: string | ReporterConstructor;\n timeout?: number;\n reporterOptions?: any;\n slow?: number;\n bail?: boolean;\n });\n\n /** Setup mocha with the given options. */\n setup(options: MochaSetupOptions): Mocha;\n bail(value?: boolean): Mocha;\n addFile(file: string): Mocha;\n /** Sets reporter by name, defaults to "spec". */\n reporter(name: string, reporterOptions?: any): Mocha;\n /** Sets reporter constructor, defaults to mocha.reporters.Spec. */\n reporter(reporter: ReporterConstructor, reporterOptions?: any): Mocha;\n ui(value: string): Mocha;\n grep(value: string): Mocha;\n grep(value: RegExp): Mocha;\n invert(): Mocha;\n ignoreLeaks(value: boolean): Mocha;\n checkLeaks(): Mocha;\n /**\n * Function to allow assertion libraries to throw errors directly into mocha.\n * This is useful when running tests in a browser because window.onerror will\n * only receive the \'message\' attribute of the Error.\n */\n throwError(error: Error): void;\n /** Enables growl support. */\n growl(): Mocha;\n globals(value: string): Mocha;\n globals(values: string[]): Mocha;\n useColors(value: boolean): Mocha;\n useInlineDiffs(value: boolean): Mocha;\n timeout(value: number): Mocha;\n slow(value: number): Mocha;\n enableTimeouts(value: boolean): Mocha;\n asyncOnly(value: boolean): Mocha;\n noHighlighting(value: boolean): Mocha;\n /** Runs tests and invokes `onComplete()` when finished. */\n run(onComplete?: (failures: number) => void): Mocha.IRunner;\n}\n\n// merge the Mocha class declaration with a module\ndeclare namespace Mocha {\n interface ISuiteCallbackContext {\n timeout(ms: number | string): this;\n retries(n: number): this;\n slow(ms: number): this;\n }\n\n interface IHookCallbackContext {\n skip(): this;\n timeout(ms: number | string): this;\n [index: string]: any;\n }\n\n\n interface ITestCallbackContext {\n skip(): this;\n timeout(ms: number | string): this;\n retries(n: number): this;\n slow(ms: number): this;\n [index: string]: any;\n }\n\n /** Partial interface for Mocha\'s `Runnable` class. */\n interface IRunnable {\n title: string;\n fn: Function;\n async: boolean;\n sync: boolean;\n timedOut: boolean;\n timeout(n: number | string): this;\n duration?: number;\n }\n\n /** Partial interface for Mocha\'s `Suite` class. */\n interface ISuite {\n parent: ISuite;\n title: string;\n\n fullTitle(): string;\n }\n\n /** Partial interface for Mocha\'s `Test` class. */\n interface ITest extends IRunnable {\n parent: ISuite;\n pending: boolean;\n state: \'failed\' | \'passed\' | undefined;\n\n fullTitle(): string;\n }\n\n interface IBeforeAndAfterContext extends IHookCallbackContext {\n currentTest: ITest;\n }\n\n interface IStats {\n suites: number;\n tests: number;\n passes: number;\n pending: number;\n failures: number;\n start?: Date;\n end?: Date;\n duration?: Date;\n }\n\n /** Partial interface for Mocha\'s `Runner` class. */\n interface IRunner {\n stats?: IStats;\n started: boolean;\n suite: ISuite;\n total: number;\n failures: number;\n grep: (re: string, invert: boolean) => this;\n grepTotal: (suite: ISuite) => number;\n globals: (arr: ReadonlyArray) => this | string[];\n abort: () => this;\n run: (fn?: (failures: number) => void) => this;\n }\n\n interface IContextDefinition {\n (description: string, callback: (this: ISuiteCallbackContext) => void): ISuite;\n only(description: string, callback: (this: ISuiteCallbackContext) => void): ISuite;\n skip(description: string, callback: (this: ISuiteCallbackContext) => void): void;\n timeout(ms: number | string): void;\n }\n\n interface ITestDefinition {\n (expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest;\n only(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest;\n skip(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): void;\n timeout(ms: number | string): void;\n state: "failed" | "passed";\n }\n\n export module reporters {\n export class Base {\n stats: IStats;\n\n constructor(runner: IRunner);\n }\n\n export class Doc extends Base { }\n export class Dot extends Base { }\n export class HTML extends Base { }\n export class HTMLCov extends Base { }\n export class JSON extends Base { }\n export class JSONCov extends Base { }\n export class JSONStream extends Base { }\n export class Landing extends Base { }\n export class List extends Base { }\n export class Markdown extends Base { }\n export class Min extends Base { }\n export class Nyan extends Base { }\n export class Progress extends Base {\n /**\n * @param options.open String used to indicate the start of the progress bar.\n * @param options.complete String used to indicate a complete test on the progress bar.\n * @param options.incomplete String used to indicate an incomplete test on the progress bar.\n * @param options.close String used to indicate the end of the progress bar.\n */\n constructor(runner: IRunner, options?: {\n open?: string;\n complete?: string;\n incomplete?: string;\n close?: string;\n });\n }\n export class Spec extends Base { }\n export class TAP extends Base { }\n export class XUnit extends Base {\n constructor(runner: IRunner, options?: any);\n }\n }\n}\n\ndeclare module "mocha" {\n export = Mocha;\n}\n',e),dd("chai",'// Type definitions for chai 4.1\n// Project: http://chaijs.com/\n// Definitions by: Jed Mao ,\n// Bart van der Schoor ,\n// Andrew Brown ,\n// Olivier Chevet ,\n// Matt Wistrand ,\n// Josh Goldberg \n// Shaun Luttin \n// Gintautas Miselis \n// Satana Charuwichitratana \n// Erik Schierboom \n// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped\n\ndeclare namespace Chai {\n interface ChaiStatic {\n expect: ExpectStatic;\n should(): Should;\n /**\n * Provides a way to extend the internals of Chai\n */\n use(fn: (chai: any, utils: any) => void): ChaiStatic;\n assert: AssertStatic;\n config: Config;\n AssertionError: typeof AssertionError;\n version: string;\n }\n\n export interface ExpectStatic extends AssertionStatic {\n fail(actual?: any, expected?: any, message?: string, operator?: Operator): void;\n }\n\n export interface AssertStatic extends Assert {\n }\n\n export interface AssertionStatic {\n (target: any, message?: string): Assertion;\n }\n\n export type Operator = string; // "==" | "===" | ">" | ">=" | "<" | "<=" | "!=" | "!==";\n\n export type OperatorComparable = boolean | null | number | string | undefined | Date;\n\n interface ShouldAssertion {\n equal(value1: any, value2: any, message?: string): void;\n Throw: ShouldThrow;\n throw: ShouldThrow;\n exist(value: any, message?: string): void;\n }\n\n interface Should extends ShouldAssertion {\n not: ShouldAssertion;\n fail(actual: any, expected: any, message?: string, operator?: Operator): void;\n }\n\n interface ShouldThrow {\n (actual: Function, expected?: string|RegExp, message?: string): void;\n (actual: Function, constructor: Error|Function, expected?: string|RegExp, message?: string): void;\n }\n\n interface Assertion extends LanguageChains, NumericComparison, TypeComparison {\n not: Assertion;\n deep: Deep;\n ordered: Ordered;\n nested: Nested;\n any: KeyFilter;\n all: KeyFilter;\n a: TypeComparison;\n an: TypeComparison;\n include: Include;\n includes: Include;\n contain: Include;\n contains: Include;\n ok: Assertion;\n true: Assertion;\n false: Assertion;\n null: Assertion;\n undefined: Assertion;\n NaN: Assertion;\n exist: Assertion;\n empty: Assertion;\n arguments: Assertion;\n Arguments: Assertion;\n equal: Equal;\n equals: Equal;\n eq: Equal;\n eql: Equal;\n eqls: Equal;\n property: Property;\n ownProperty: OwnProperty;\n haveOwnProperty: OwnProperty;\n ownPropertyDescriptor: OwnPropertyDescriptor;\n haveOwnPropertyDescriptor: OwnPropertyDescriptor;\n length: Length;\n lengthOf: Length;\n match: Match;\n matches: Match;\n string(string: string, message?: string): Assertion;\n keys: Keys;\n key(string: string): Assertion;\n throw: Throw;\n throws: Throw;\n Throw: Throw;\n respondTo: RespondTo;\n respondsTo: RespondTo;\n itself: Assertion;\n satisfy: Satisfy;\n satisfies: Satisfy;\n closeTo: CloseTo;\n approximately: CloseTo;\n members: Members;\n increase: PropertyChange;\n increases: PropertyChange;\n decrease: PropertyChange;\n decreases: PropertyChange;\n change: PropertyChange;\n changes: PropertyChange;\n extensible: Assertion;\n sealed: Assertion;\n frozen: Assertion;\n oneOf(list: any[], message?: string): Assertion;\n }\n\n interface LanguageChains {\n to: Assertion;\n be: Assertion;\n been: Assertion;\n is: Assertion;\n that: Assertion;\n which: Assertion;\n and: Assertion;\n has: Assertion;\n have: Assertion;\n with: Assertion;\n at: Assertion;\n of: Assertion;\n same: Assertion;\n but: Assertion;\n does: Assertion;\n }\n\n interface NumericComparison {\n above: NumberComparer;\n gt: NumberComparer;\n greaterThan: NumberComparer;\n least: NumberComparer;\n gte: NumberComparer;\n below: NumberComparer;\n lt: NumberComparer;\n lessThan: NumberComparer;\n most: NumberComparer;\n lte: NumberComparer;\n within(start: number, finish: number, message?: string): Assertion;\n within(start: Date, finish: Date, message?: string): Assertion;\n }\n\n interface NumberComparer {\n (value: number | Date, message?: string): Assertion;\n }\n\n interface TypeComparison {\n (type: string, message?: string): Assertion;\n instanceof: InstanceOf;\n instanceOf: InstanceOf;\n }\n\n interface InstanceOf {\n (constructor: Object, message?: string): Assertion;\n }\n\n interface CloseTo {\n (expected: number, delta: number, message?: string): Assertion;\n }\n\n interface Nested {\n include: Include;\n property: Property;\n members: Members;\n }\n\n interface Deep {\n equal: Equal;\n equals: Equal;\n eq: Equal;\n include: Include;\n property: Property;\n members: Members;\n ordered: Ordered;\n }\n\n interface Ordered {\n members: Members;\n }\n\n interface KeyFilter {\n keys: Keys;\n }\n\n interface Equal {\n (value: any, message?: string): Assertion;\n }\n\n interface Property {\n (name: string, value?: any, message?: string): Assertion;\n }\n\n interface OwnProperty {\n (name: string, message?: string): Assertion;\n }\n\n interface OwnPropertyDescriptor {\n (name: string, descriptor: PropertyDescriptor, message?: string): Assertion;\n (name: string, message?: string): Assertion;\n }\n\n interface Length extends LanguageChains, NumericComparison {\n (length: number, message?: string): Assertion;\n }\n\n interface Include {\n (value: Object | string | number, message?: string): Assertion;\n keys: Keys;\n deep: Deep;\n ordered: Ordered;\n members: Members;\n any: KeyFilter;\n all: KeyFilter;\n }\n\n interface Match {\n (regexp: RegExp, message?: string): Assertion;\n }\n\n interface Keys {\n (...keys: string[]): Assertion;\n (keys: any[]|Object): Assertion;\n }\n\n interface Throw {\n (expected?: string|RegExp, message?: string): Assertion;\n (constructor: Error|Function, expected?: string|RegExp, message?: string): Assertion;\n }\n\n interface RespondTo {\n (method: string, message?: string): Assertion;\n }\n\n interface Satisfy {\n (matcher: Function, message?: string): Assertion;\n }\n\n interface Members {\n (set: any[], message?: string): Assertion;\n }\n\n interface PropertyChange {\n (object: Object, property: string, message?: string): Assertion;\n }\n\n export interface Assert {\n /**\n * @param expression Expression to test for truthiness.\n * @param message Message to display on error.\n */\n (expression: any, message?: string): void;\n\n /**\n * Throws a failure.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n * @param operator Comparison operator, if not strict equality.\n * @remarks Node.js assert module-compatible.\n */\n fail(actual?: T, expected?: T, message?: string, operator?: Operator): void;\n\n /**\n * Asserts that object is truthy.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param message Message to display on error.\n */\n isOk(value: T, message?: string): void;\n\n /**\n * Asserts that object is truthy.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param message Message to display on error.\n */\n ok(value: T, message?: string): void;\n\n /**\n * Asserts that object is falsy.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param message Message to display on error.\n */\n isNotOk(value: T, message?: string): void;\n\n /**\n * Asserts that object is falsy.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param message Message to display on error.\n */\n notOk(value: T, message?: string): void;\n\n /**\n * Asserts non-strict equality (==) of actual and expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n equal(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts non-strict inequality (==) of actual and expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n notEqual(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts strict equality (===) of actual and expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n strictEqual(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts strict inequality (==) of actual and expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n notStrictEqual(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts that actual is deeply equal (==) to expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n deepEqual(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts that actual is not deeply equal (==) to expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n notDeepEqual(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts that actual is deeply strict equal (===) to expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n deepStrictEqual(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts valueToCheck is strictly greater than (>) valueToBeAbove.\n *\n * @param valueToCheck Actual value.\n * @param valueToBeAbove Minimum Potential expected value.\n * @param message Message to display on error.\n */\n isAbove(valueToCheck: number, valueToBeAbove: number, message?: string): void;\n\n /**\n * Asserts valueToCheck is greater than or equal to (>=) valueToBeAtLeast.\n *\n * @param valueToCheck Actual value.\n * @param valueToBeAtLeast Minimum Potential expected value.\n * @param message Message to display on error.\n */\n isAtLeast(valueToCheck: number, valueToBeAtLeast: number, message?: string): void;\n\n /**\n * Asserts valueToCheck is strictly less than (<) valueToBeBelow.\n *\n * @param valueToCheck Actual value.\n * @param valueToBeBelow Minimum Potential expected value.\n * @param message Message to display on error.\n */\n isBelow(valueToCheck: number, valueToBeBelow: number, message?: string): void;\n\n /**\n * Asserts valueToCheck is greater than or equal to (>=) valueToBeAtMost.\n *\n * @param valueToCheck Actual value.\n * @param valueToBeAtMost Minimum Potential expected value.\n * @param message Message to display on error.\n */\n isAtMost(valueToCheck: number, valueToBeAtMost: number, message?: string): void;\n\n /**\n * Asserts that value is true.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isTrue(value: T, message?: string): void;\n\n /**\n * Asserts that value is false.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isFalse(value: T, message?: string): void;\n\n /**\n * Asserts that value is not true.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotTrue(value: T, message?: string): void;\n\n /**\n * Asserts that value is not false.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotFalse(value: T, message?: string): void;\n\n /**\n * Asserts that value is null.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNull(value: T, message?: string): void;\n\n /**\n * Asserts that value is not null.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotNull(value: T, message?: string): void;\n\n /**\n * Asserts that value is not null.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNaN(value: T, message?: string): void;\n\n /**\n * Asserts that value is not null.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotNaN(value: T, message?: string): void;\n\n /**\n * Asserts that the target is neither null nor undefined.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n exists(value: T, message?: string): void;\n\n /**\n * Asserts that the target is either null or undefined.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n notExists(value: T, message?: string): void;\n\n /**\n * Asserts that value is undefined.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isUndefined(value: T, message?: string): void;\n\n /**\n * Asserts that value is not undefined.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isDefined(value: T, message?: string): void;\n\n /**\n * Asserts that value is a function.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isFunction(value: T, message?: string): void;\n\n /**\n * Asserts that value is not a function.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotFunction(value: T, message?: string): void;\n\n /**\n * Asserts that value is an object of type \'Object\'\n * (as revealed by Object.prototype.toString).\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n * @remarks The assertion does not match subclassed objects.\n */\n isObject(value: T, message?: string): void;\n\n /**\n * Asserts that value is not an object of type \'Object\'\n * (as revealed by Object.prototype.toString).\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotObject(value: T, message?: string): void;\n\n /**\n * Asserts that value is an array.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isArray(value: T, message?: string): void;\n\n /**\n * Asserts that value is not an array.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotArray(value: T, message?: string): void;\n\n /**\n * Asserts that value is a string.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isString(value: T, message?: string): void;\n\n /**\n * Asserts that value is not a string.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotString(value: T, message?: string): void;\n\n /**\n * Asserts that value is a number.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNumber(value: T, message?: string): void;\n\n /**\n * Asserts that value is not a number.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotNumber(value: T, message?: string): void;\n\n /**\n * Asserts that value is a boolean.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isBoolean(value: T, message?: string): void;\n\n /**\n * Asserts that value is not a boolean.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotBoolean(value: T, message?: string): void;\n\n /**\n * Asserts that value\'s type is name, as determined by Object.prototype.toString.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param name Potential expected type name of value.\n * @param message Message to display on error.\n */\n typeOf(value: T, name: string, message?: string): void;\n\n /**\n * Asserts that value\'s type is not name, as determined by Object.prototype.toString.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param name Potential expected type name of value.\n * @param message Message to display on error.\n */\n notTypeOf(value: T, name: string, message?: string): void;\n\n /**\n * Asserts that value is an instance of constructor.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param constructor Potential expected contructor of value.\n * @param message Message to display on error.\n */\n instanceOf(value: T, constructor: Function, message?: string): void;\n\n /**\n * Asserts that value is not an instance of constructor.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param constructor Potential expected contructor of value.\n * @param message Message to display on error.\n */\n notInstanceOf(value: T, type: Function, message?: string): void;\n\n /**\n * Asserts that haystack includes needle.\n *\n * @param haystack Container string.\n * @param needle Potential expected substring of haystack.\n * @param message Message to display on error.\n */\n include(haystack: string, needle: string, message?: string): void;\n\n /**\n * Asserts that haystack includes needle.\n *\n * @type T Type of values in haystack.\n * @param haystack Container array.\n * @param needle Potential value contained in haystack.\n * @param message Message to display on error.\n */\n include(haystack: T[], needle: T, message?: string): void;\n\n /**\n * Asserts that haystack does not include needle.\n *\n * @param haystack Container string or array.\n * @param needle Potential expected substring of haystack.\n * @param message Message to display on error.\n */\n notInclude(haystack: string | any[], needle: any, message?: string): void;\n\n /**\n * Asserts that haystack includes needle. Can be used to assert the inclusion of a value in an array or a subset of properties in an object. Deep equality is used.\n *\n * @param haystack Container string.\n * @param needle Potential expected substring of haystack.\n * @param message Message to display on error.\n */\n deepInclude(haystack: string, needle: string, message?: string): void;\n\n /**\n * Asserts that haystack includes needle. Can be used to assert the inclusion of a value in an array or a subset of properties in an object. Deep equality is used.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n deepInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that haystack does not include needle. Can be used to assert the absence of a value in an array or a subset of properties in an object. Deep equality is used.\n *\n * @param haystack Container string or array.\n * @param needle Potential expected substring of haystack.\n * @param message Message to display on error.\n */\n notDeepInclude(haystack: string | any[], needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the inclusion of a subset of properties in an object.\n *\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.Asserts that ‘haystack’ includes ‘needle’.\n * Can be used to assert the inclusion of a subset of properties in an object.\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n nestedInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ does not include ‘needle’. Can be used to assert the absence of a subset of properties in an object.\n *\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.Asserts that ‘haystack’ includes ‘needle’.\n * Can be used to assert the inclusion of a subset of properties in an object.\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n notNestedInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the inclusion of a subset of properties in an object while checking for deep equality\n *\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.Asserts that ‘haystack’ includes ‘needle’.\n * Can be used to assert the inclusion of a subset of properties in an object.\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n deepNestedInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ does not include ‘needle’. Can be used to assert the absence of a subset of properties in an object while checking for deep equality.\n *\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.Asserts that ‘haystack’ includes ‘needle’.\n * Can be used to assert the inclusion of a subset of properties in an object.\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n notDeepNestedInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the inclusion of a subset of properties in an object while ignoring inherited properties.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n ownInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the absence of a subset of properties in an object while ignoring inherited properties.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n notOwnInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the inclusion of a subset of properties in an object while ignoring inherited properties and checking for deep\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n deepOwnInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the absence of a subset of properties in an object while ignoring inherited properties and checking for deep equality.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n notDeepOwnInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that value matches the regular expression regexp.\n *\n * @param value Actual value.\n * @param regexp Potential match of value.\n * @param message Message to display on error.\n */\n match(value: string, regexp: RegExp, message?: string): void;\n\n /**\n * Asserts that value does not match the regular expression regexp.\n *\n * @param value Actual value.\n * @param regexp Potential match of value.\n * @param message Message to display on error.\n */\n notMatch(expected: any, regexp: RegExp, message?: string): void;\n\n /**\n * Asserts that object has a property named by property.\n *\n * @type T Type of object.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param message Message to display on error.\n */\n property(object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that object has a property named by property.\n *\n * @type T Type of object.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param message Message to display on error.\n */\n notProperty(object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that object has a property named by property, which can be a string\n * using dot- and bracket-notation for deep reference.\n *\n * @type T Type of object.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param message Message to display on error.\n */\n deepProperty(object: T, property: string, message?: string): void;\n\n /**\n * Asserts that object does not have a property named by property, which can be a\n * string using dot- and bracket-notation for deep reference.\n *\n * @type T Type of object.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param message Message to display on error.\n */\n notDeepProperty(object: T, property: string, message?: string): void;\n\n /**\n * Asserts that object has a property named by property with value given by value.\n *\n * @type T Type of object.\n * @type V Type of value.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param value Potential expected property value.\n * @param message Message to display on error.\n */\n propertyVal(object: T, property: string /* keyof T */, value: V, message?: string): void;\n\n /**\n * Asserts that object has a property named by property with value given by value.\n *\n * @type T Type of object.\n * @type V Type of value.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param value Potential expected property value.\n * @param message Message to display on error.\n */\n propertyNotVal(object: T, property: string /* keyof T */, value: V, message?: string): void;\n\n /**\n * Asserts that object has a property named by property, which can be a string\n * using dot- and bracket-notation for deep reference.\n *\n * @type T Type of object.\n * @type V Type of value.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param value Potential expected property value.\n * @param message Message to display on error.\n */\n deepPropertyVal(object: T, property: string, value: V, message?: string): void;\n\n /**\n * Asserts that object does not have a property named by property, which can be a\n * string using dot- and bracket-notation for deep reference.\n *\n * @type T Type of object.\n * @type V Type of value.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param value Potential expected property value.\n * @param message Message to display on error.\n */\n deepPropertyNotVal(object: T, property: string, value: V, message?: string): void;\n\n /**\n * Asserts that object has a length property with the expected value.\n *\n * @type T Type of object.\n * @param object Container object.\n * @param length Potential expected length of object.\n * @param message Message to display on error.\n */\n lengthOf(object: T, length: number, message?: string): void;\n\n /**\n * Asserts that fn will throw an error.\n *\n * @param fn Function that may throw.\n * @param message Message to display on error.\n */\n throw(fn: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param regExp Potential expected message match.\n * @param message Message to display on error.\n */\n throw(fn: Function, regExp: RegExp): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n throw(fn: Function, constructor: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor\n * and an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n throw(fn: Function, constructor: Function, regExp: RegExp): void;\n\n /**\n * Asserts that fn will throw an error.\n *\n * @param fn Function that may throw.\n * @param message Message to display on error.\n */\n throws(fn: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param errType Potential expected message match or error constructor.\n * @param message Message to display on error.\n */\n throws(fn: Function, errType: RegExp|Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor\n * and an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n throws(fn: Function, errType: Function, regExp: RegExp): void;\n\n /**\n * Asserts that fn will throw an error.\n *\n * @param fn Function that may throw.\n * @param message Message to display on error.\n */\n Throw(fn: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param regExp Potential expected message match.\n * @param message Message to display on error.\n */\n Throw(fn: Function, regExp: RegExp): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n Throw(fn: Function, errType: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor\n * and an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n Throw(fn: Function, errType: Function, regExp: RegExp): void;\n\n /**\n * Asserts that fn will not throw an error.\n *\n * @param fn Function that may throw.\n * @param message Message to display on error.\n */\n doesNotThrow(fn: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param regExp Potential expected message match.\n * @param message Message to display on error.\n */\n doesNotThrow(fn: Function, regExp: RegExp): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n doesNotThrow(fn: Function, errType: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor\n * and an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n doesNotThrow(fn: Function, errType: Function, regExp: RegExp): void;\n\n /**\n * Compares two values using operator.\n *\n * @param val1 Left value during comparison.\n * @param operator Comparison operator.\n * @param val2 Right value during comparison.\n * @param message Message to display on error.\n */\n operator(val1: OperatorComparable, operator: Operator, val2: OperatorComparable, message?: string): void;\n\n /**\n * Asserts that the target is equal to expected, to within a +/- delta range.\n *\n * @param actual Actual value\n * @param expected Potential expected value.\n * @param delta Maximum differenced between values.\n * @param message Message to display on error.\n */\n closeTo(actual: number, expected: number, delta: number, message?: string): void;\n\n /**\n * Asserts that the target is equal to expected, to within a +/- delta range.\n *\n * @param actual Actual value\n * @param expected Potential expected value.\n * @param delta Maximum differenced between values.\n * @param message Message to display on error.\n */\n approximately(act: number, exp: number, delta: number, message?: string): void;\n\n /**\n * Asserts that set1 and set2 have the same members. Order is not take into account.\n *\n * @type T Type of set values.\n * @param set1 Actual set of values.\n * @param set2 Potential expected set of values.\n * @param message Message to display on error.\n */\n sameMembers(set1: T[], set2: T[], message?: string): void;\n\n /**\n * Asserts that set1 and set2 have the same members using deep equality checking.\n * Order is not take into account.\n *\n * @type T Type of set values.\n * @param set1 Actual set of values.\n * @param set2 Potential expected set of values.\n * @param message Message to display on error.\n */\n sameDeepMembers(set1: T[], set2: T[], message?: string): void;\n\n /**\n * Asserts that set1 and set2 have the same members in the same order.\n * Uses a strict equality check (===).\n *\n * @type T Type of set values.\n * @param set1 Actual set of values.\n * @param set2 Potential expected set of values.\n * @param message Message to display on error.\n */\n sameOrderedMembers(set1: T[], set2: T[], message?: string): void;\n\n /**\n * Asserts that set1 and set2 don’t have the same members in the same order.\n * Uses a strict equality check (===).\n *\n * @type T Type of set values.\n * @param set1 Actual set of values.\n * @param set2 Potential expected set of values.\n * @param message Message to display on error.\n */\n notSameOrderedMembers(set1: T[], set2: T[], message?: string): void;\n\n /**\n * Asserts that set1 and set2 have the same members in the same order.\n * Uses a deep equality check.\n *\n * @type T Type of set values.\n * @param set1 Actual set of values.\n * @param set2 Potential expected set of values.\n * @param message Message to display on error.\n */\n sameDeepOrderedMembers(set1: T[], set2: T[], message?: string): void;\n\n /**\n * Asserts that set1 and set2 don’t have the same members in the same order.\n * Uses a deep equality check.\n *\n * @type T Type of set values.\n * @param set1 Actual set of values.\n * @param set2 Potential expected set of values.\n * @param message Message to display on error.\n */\n notSameDeepOrderedMembers(set1: T[], set2: T[], message?: string): void;\n\n /**\n * Asserts that subset is included in superset in the same order beginning with the first element in superset.\n * Uses a strict equality check (===).\n *\n * @type T Type of set values.\n * @param superset Actual set of values.\n * @param subset Potential contained set of values.\n * @param message Message to display on error.\n */\n includeOrderedMembers(superset: T[], subset: T[], message?: string): void;\n\n /**\n * Asserts that subset isn’t included in superset in the same order beginning with the first element in superset.\n * Uses a strict equality check (===).\n *\n * @type T Type of set values.\n * @param superset Actual set of values.\n * @param subset Potential contained set of values.\n * @param message Message to display on error.\n */\n notIncludeOrderedMembers(superset: T[], subset: T[], message?: string): void;\n\n /**\n * Asserts that subset is included in superset in the same order beginning with the first element in superset.\n * Uses a deep equality check.\n *\n * @type T Type of set values.\n * @param superset Actual set of values.\n * @param subset Potential contained set of values.\n * @param message Message to display on error.\n */\n includeDeepOrderedMembers(superset: T[], subset: T[], message?: string): void;\n\n /**\n * Asserts that subset isn’t included in superset in the same order beginning with the first element in superset.\n * Uses a deep equality check.\n *\n * @type T Type of set values.\n * @param superset Actual set of values.\n * @param subset Potential contained set of values.\n * @param message Message to display on error.\n */\n notIncludeDeepOrderedMembers(superset: T[], subset: T[], message?: string): void;\n\n /**\n * Asserts that subset is included in superset. Order is not take into account.\n *\n * @type T Type of set values.\n * @param superset Actual set of values.\n * @param subset Potential contained set of values.\n * @param message Message to display on error.\n */\n includeMembers(superset: T[], subset: T[], message?: string): void;\n\n /**\n * Asserts that subset is included in superset using deep equality checking.\n * Order is not take into account.\n *\n * @type T Type of set values.\n * @param superset Actual set of values.\n * @param subset Potential contained set of values.\n * @param message Message to display on error.\n */\n includeDeepMembers(superset: T[], subset: T[], message?: string): void;\n\n /**\n * Asserts that non-object, non-array value inList appears in the flat array list.\n *\n * @type T Type of list values.\n * @param inList Value expected to be in the list.\n * @param list List of values.\n * @param message Message to display on error.\n */\n oneOf(inList: T, list: T[], message?: string): void;\n\n /**\n * Asserts that a function changes the value of a property.\n *\n * @type T Type of object.\n * @param modifier Function to run.\n * @param object Container object.\n * @param property Property of object expected to be modified.\n * @param message Message to display on error.\n */\n changes(modifier: Function, object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that a function does not change the value of a property.\n *\n * @type T Type of object.\n * @param modifier Function to run.\n * @param object Container object.\n * @param property Property of object expected not to be modified.\n * @param message Message to display on error.\n */\n doesNotChange(modifier: Function, object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that a function increases an object property.\n *\n * @type T Type of object.\n * @param modifier Function to run.\n * @param object Container object.\n * @param property Property of object expected to be increased.\n * @param message Message to display on error.\n */\n increases(modifier: Function, object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that a function does not increase an object property.\n *\n * @type T Type of object.\n * @param modifier Function to run.\n * @param object Container object.\n * @param property Property of object expected not to be increased.\n * @param message Message to display on error.\n */\n doesNotIncrease(modifier: Function, object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that a function decreases an object property.\n *\n * @type T Type of object.\n * @param modifier Function to run.\n * @param object Container object.\n * @param property Property of object expected to be decreased.\n * @param message Message to display on error.\n */\n decreases(modifier: Function, object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that a function does not decrease an object property.\n *\n * @type T Type of object.\n * @param modifier Function to run.\n * @param object Container object.\n * @param property Property of object expected not to be decreased.\n * @param message Message to display on error.\n */\n doesNotDecrease(modifier: Function, object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts if value is not a false value, and throws if it is a true value.\n *\n * @type T Type of object.\n * @param object Actual value.\n * @param message Message to display on error.\n * @remarks This is added to allow for chai to be a drop-in replacement for\n * Node’s assert class.\n */\n ifError(object: T, message?: string): void;\n\n /**\n * Asserts that object is extensible (can have new properties added to it).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isExtensible(object: T, message?: string): void;\n\n /**\n * Asserts that object is extensible (can have new properties added to it).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n extensible(object: T, message?: string): void;\n\n /**\n * Asserts that object is not extensible.\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isNotExtensible(object: T, message?: string): void;\n\n /**\n * Asserts that object is not extensible.\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n notExtensible(object: T, message?: string): void;\n\n /**\n * Asserts that object is sealed (can have new properties added to it\n * and its existing properties cannot be removed).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isSealed(object: T, message?: string): void;\n\n /**\n * Asserts that object is sealed (can have new properties added to it\n * and its existing properties cannot be removed).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n sealed(object: T, message?: string): void;\n\n /**\n * Asserts that object is not sealed.\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isNotSealed(object: T, message?: string): void;\n\n /**\n * Asserts that object is not sealed.\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n notSealed(object: T, message?: string): void;\n\n /**\n * Asserts that object is frozen (cannot have new properties added to it\n * and its existing properties cannot be removed).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isFrozen(object: T, message?: string): void;\n\n /**\n * Asserts that object is frozen (cannot have new properties added to it\n * and its existing properties cannot be removed).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n frozen(object: T, message?: string): void;\n\n /**\n * Asserts that object is not frozen (cannot have new properties added to it\n * and its existing properties cannot be removed).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isNotFrozen(object: T, message?: string): void;\n\n /**\n * Asserts that object is not frozen (cannot have new properties added to it\n * and its existing properties cannot be removed).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n notFrozen(object: T, message?: string): void;\n\n /**\n * Asserts that the target does not contain any values. For arrays and\n * strings, it checks the length property. For Map and Set instances, it\n * checks the size property. For non-function objects, it gets the count\n * of own enumerable string keys.\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isEmpty(object: T, message?: string): void;\n\n /**\n * Asserts that the target contains values. For arrays and strings, it checks\n * the length property. For Map and Set instances, it checks the size property.\n * For non-function objects, it gets the count of own enumerable string keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param message Message to display on error.\n */\n isNotEmpty(object: T, message?: string): void;\n\n /**\n * Asserts that `object` has at least one of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n hasAnyKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` has all and only all of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n hasAllKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` has all of the `keys` provided but may have more keys not listed.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n containsAllKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` has none of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n doesNotHaveAnyKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` does not have at least one of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n doesNotHaveAllKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` has at least one of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n hasAnyDeepKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` has all and only all of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n hasAllDeepKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` contains all of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n containsAllDeepKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` contains all of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n doesNotHaveAnyDeepKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` contains all of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n doesNotHaveAllDeepKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that object has a direct or inherited property named by property,\n * which can be a string using dot- and bracket-notation for nested reference.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param property Property to test.\n * @param message Message to display on error.\n */\n nestedProperty(object: T, property: string, message?: string): void;\n\n /**\n * Asserts that object does not have a property named by property,\n * which can be a string using dot- and bracket-notation for nested reference.\n * The property cannot exist on the object nor anywhere in its prototype chain.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param property Property to test.\n * @param message Message to display on error.\n */\n notNestedProperty(object: T, property: string, message?: string): void;\n\n /**\n * Asserts that object has a property named by property with value given by value.\n * property can use dot- and bracket-notation for nested reference. Uses a strict equality check (===).\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param property Property to test.\n * @param value Value to test.\n * @param message Message to display on error.\n */\n nestedPropertyVal(object: T, property: string, value: any, message?: string): void;\n\n /**\n * Asserts that object does not have a property named by property with value given by value.\n * property can use dot- and bracket-notation for nested reference. Uses a strict equality check (===).\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param property Property to test.\n * @param value Value to test.\n * @param message Message to display on error.\n */\n notNestedPropertyVal(object: T, property: string, value: any, message?: string): void;\n\n /**\n * Asserts that object has a property named by property with a value given by value.\n * property can use dot- and bracket-notation for nested reference. Uses a deep equality check.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param property Property to test.\n * @param value Value to test.\n * @param message Message to display on error.\n */\n deepNestedPropertyVal(object: T, property: string, value: any, message?: string): void;\n\n /**\n * Asserts that object does not have a property named by property with value given by value.\n * property can use dot- and bracket-notation for nested reference. Uses a deep equality check.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param property Property to test.\n * @param value Value to test.\n * @param message Message to display on error.\n */\n notDeepNestedPropertyVal(object: T, property: string, value: any, message?: string): void;\n }\n\n export interface Config {\n /**\n * Default: false\n */\n includeStack: boolean;\n\n /**\n * Default: true\n */\n showDiff: boolean;\n\n /**\n * Default: 40\n */\n truncateThreshold: number;\n }\n\n export class AssertionError {\n constructor(message: string, _props?: any, ssf?: Function);\n name: string;\n message: string;\n showDiff: boolean;\n stack: string;\n }\n}\n\ndeclare const chai: Chai.ChaiStatic;\n\ndeclare module "chai" {\n export = chai;\n}\n\ninterface Object {\n should: Chai.Assertion;\n}\n',e),dd("Typescript",'// Type definitions for Node.js 8.10.x\n// Project: http://nodejs.org/\n// Definitions by: Microsoft TypeScript \n// DefinitelyTyped \n// Parambir Singh \n// Christian Vaagland Tellnes \n// Wilco Bakker \n// Nicolas Voigt \n// Chigozirim C. \n// Flarna \n// Mariusz Wiktorczyk \n// wwwy3y3 \n// Deividas Bakanas \n// Kelvin Jin \n// Alvis HT Tang \n// Sebastian Silbermann \n// Hannes Magnusson \n// Alberto Schiabel \n// Huw \n// Nicolas Even \n// Bruno Scheufler \n// Hoàng Văn Khải \n// Lishude \n// Andrew Makarov \n// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped\n// TypeScript Version: 2.1\n\n/** inspector module types */\n/// \n\n// This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build\ninterface Console {\n Console: NodeJS.ConsoleConstructor;\n assert(value: any, message?: string, ...optionalParams: any[]): void;\n dir(obj: any, options?: NodeJS.InspectOptions): void;\n debug(message?: any, ...optionalParams: any[]): void;\n error(message?: any, ...optionalParams: any[]): void;\n info(message?: any, ...optionalParams: any[]): void;\n log(message?: any, ...optionalParams: any[]): void;\n time(label: string): void;\n timeEnd(label: string): void;\n trace(message?: any, ...optionalParams: any[]): void;\n warn(message?: any, ...optionalParams: any[]): void;\n}\n\ninterface Error {\n stack?: string;\n}\n\n// Declare "static" methods in Error\ninterface ErrorConstructor {\n /** Create .stack property on a target object */\n captureStackTrace(targetObject: Object, constructorOpt?: Function): void;\n\n /**\n * Optional override for formatting stack traces\n *\n * @see https://github.com/v8/v8/wiki/Stack%20Trace%20API#customizing-stack-traces\n */\n prepareStackTrace?: (err: Error, stackTraces: NodeJS.CallSite[]) => any;\n\n stackTraceLimit: number;\n}\n\n// compat for TypeScript 1.8\n// if you use with --target es3 or --target es5 and use below definitions,\n// use the lib.es6.d.ts that is bundled with TypeScript 1.8.\ninterface MapConstructor { }\ninterface WeakMapConstructor { }\ninterface SetConstructor { }\ninterface WeakSetConstructor { }\n\n// Forward-declare needed types from lib.es2015.d.ts (in case users are using `--lib es5`)\ninterface Iterable { }\ninterface Iterator {\n next(value?: any): IteratorResult;\n}\ninterface IteratorResult { }\ninterface SymbolConstructor {\n readonly iterator: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\n\n// Node.js ESNEXT support\ninterface String {\n /** Removes whitespace from the left end of a string. */\n trimLeft(): string;\n /** Removes whitespace from the right end of a string. */\n trimRight(): string;\n}\n\n/************************************************\n* *\n* GLOBAL *\n* *\n************************************************/\ndeclare var process: NodeJS.Process;\ndeclare var global: NodeJS.Global;\ndeclare var console: Console;\n\ndeclare var __filename: string;\ndeclare var __dirname: string;\n\ndeclare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;\ndeclare namespace setTimeout {\n export function __promisify__(ms: number): Promise;\n export function __promisify__(ms: number, value: T): Promise;\n}\ndeclare function clearTimeout(timeoutId: NodeJS.Timer): void;\ndeclare function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;\ndeclare function clearInterval(intervalId: NodeJS.Timer): void;\ndeclare function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any;\ndeclare namespace setImmediate {\n export function __promisify__(): Promise;\n export function __promisify__(value: T): Promise;\n}\ndeclare function clearImmediate(immediateId: any): void;\n\n// TODO: change to `type NodeRequireFunction = (id: string) => any;` in next mayor version.\ninterface NodeRequireFunction {\n /* tslint:disable-next-line:callable-types */\n (id: string): any;\n}\n\ninterface NodeRequire extends NodeRequireFunction {\n resolve: RequireResolve;\n cache: any;\n extensions: NodeExtensions;\n main: NodeModule | undefined;\n}\n\ninterface RequireResolve {\n (id: string, options?: { paths?: string[]; }): string;\n paths(request: string): string[] | null;\n}\n\ninterface NodeExtensions {\n \'.js\': (m: NodeModule, filename: string) => any;\n \'.json\': (m: NodeModule, filename: string) => any;\n \'.node\': (m: NodeModule, filename: string) => any;\n [ext: string]: (m: NodeModule, filename: string) => any;\n}\n\ndeclare var require: NodeRequire;\n\ninterface NodeModule {\n exports: any;\n require: NodeRequireFunction;\n id: string;\n filename: string;\n loaded: boolean;\n parent: NodeModule | null;\n children: NodeModule[];\n paths: string[];\n}\n\ndeclare var module: NodeModule;\n\n// Same as module.exports\ndeclare var exports: any;\ndeclare var SlowBuffer: {\n new(str: string, encoding?: string): Buffer;\n new(size: number): Buffer;\n new(size: Uint8Array): Buffer;\n new(array: any[]): Buffer;\n prototype: Buffer;\n isBuffer(obj: any): boolean;\n byteLength(string: string, encoding?: string): number;\n concat(list: Buffer[], totalLength?: number): Buffer;\n};\n\n// Buffer class\ntype BufferEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex";\ninterface Buffer extends NodeBuffer { }\n\n/**\n * Raw data is stored in instances of the Buffer class.\n * A Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\n * Valid string encodings: \'ascii\'|\'utf8\'|\'utf16le\'|\'ucs2\'(alias of \'utf16le\')|\'base64\'|\'binary\'(deprecated)|\'hex\'\n */\ndeclare var Buffer: {\n /**\n * Allocates a new buffer containing the given {str}.\n *\n * @param str String to store in buffer.\n * @param encoding encoding to use, optional. Default is \'utf8\'\n */\n new(str: string, encoding?: string): Buffer;\n /**\n * Allocates a new buffer of {size} octets.\n *\n * @param size count of octets to allocate.\n */\n new(size: number): Buffer;\n /**\n * Allocates a new buffer containing the given {array} of octets.\n *\n * @param array The octets to store.\n */\n new(array: Uint8Array): Buffer;\n /**\n * Produces a Buffer backed by the same allocated memory as\n * the given {ArrayBuffer}.\n *\n *\n * @param arrayBuffer The ArrayBuffer with which to share memory.\n */\n new(arrayBuffer: ArrayBuffer): Buffer;\n /**\n * Allocates a new buffer containing the given {array} of octets.\n *\n * @param array The octets to store.\n */\n new(array: any[]): Buffer;\n /**\n * Copies the passed {buffer} data onto a new {Buffer} instance.\n *\n * @param buffer The buffer to copy.\n */\n new(buffer: Buffer): Buffer;\n prototype: Buffer;\n /**\n * When passed a reference to the .buffer property of a TypedArray instance,\n * the newly created Buffer will share the same allocated memory as the TypedArray.\n * The optional {byteOffset} and {length} arguments specify a memory range\n * within the {arrayBuffer} that will be shared by the Buffer.\n *\n * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer()\n */\n from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer;\n /**\n * Creates a new Buffer using the passed {data}\n * @param data data to create a new Buffer\n */\n from(data: any[] | string | Buffer | ArrayBuffer /*| TypedArray*/): Buffer;\n /**\n * Creates a new Buffer containing the given JavaScript string {str}.\n * If provided, the {encoding} parameter identifies the character encoding.\n * If not provided, {encoding} defaults to \'utf8\'.\n */\n from(str: string, encoding?: string): Buffer;\n /**\n * Returns true if {obj} is a Buffer\n *\n * @param obj object to test.\n */\n isBuffer(obj: any): obj is Buffer;\n /**\n * Returns true if {encoding} is a valid encoding argument.\n * Valid string encodings in Node 0.12: \'ascii\'|\'utf8\'|\'utf16le\'|\'ucs2\'(alias of \'utf16le\')|\'base64\'|\'binary\'(deprecated)|\'hex\'\n *\n * @param encoding string to test.\n */\n isEncoding(encoding: string): boolean;\n /**\n * Gives the actual byte length of a string. encoding defaults to \'utf8\'.\n * This is not the same as String.prototype.length since that returns the number of characters in a string.\n *\n * @param string string to test. (TypedArray is also allowed, but it is only available starting ES2017)\n * @param encoding encoding used to evaluate (defaults to \'utf8\')\n */\n byteLength(string: string | Buffer | DataView | ArrayBuffer, encoding?: string): number;\n /**\n * Returns a buffer which is the result of concatenating all the buffers in the list together.\n *\n * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer.\n * If the list has exactly one item, then the first item of the list is returned.\n * If the list has more than one item, then a new Buffer is created.\n *\n * @param list An array of Buffer objects to concatenate\n * @param totalLength Total length of the buffers when concatenated.\n * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly.\n */\n concat(list: Buffer[], totalLength?: number): Buffer;\n /**\n * The same as buf1.compare(buf2).\n */\n compare(buf1: Buffer, buf2: Buffer): number;\n /**\n * Allocates a new buffer of {size} octets.\n *\n * @param size count of octets to allocate.\n * @param fill if specified, buffer will be initialized by calling buf.fill(fill).\n * If parameter is omitted, buffer will be filled with zeros.\n * @param encoding encoding used for call to buf.fill while initalizing\n */\n alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer;\n /**\n * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents\n * of the newly created Buffer are unknown and may contain sensitive data.\n *\n * @param size count of octets to allocate\n */\n allocUnsafe(size: number): Buffer;\n /**\n * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents\n * of the newly created Buffer are unknown and may contain sensitive data.\n *\n * @param size count of octets to allocate\n */\n allocUnsafeSlow(size: number): Buffer;\n /**\n * This is the number of bytes used to determine the size of pre-allocated, internal Buffer instances used for pooling. This value may be modified.\n */\n poolSize: number;\n};\n\n/************************************************\n* *\n* GLOBAL INTERFACES *\n* *\n************************************************/\ndeclare namespace NodeJS {\n export interface InspectOptions {\n showHidden?: boolean;\n depth?: number | null;\n colors?: boolean;\n customInspect?: boolean;\n showProxy?: boolean;\n maxArrayLength?: number | null;\n breakLength?: number;\n }\n\n export interface ConsoleConstructor {\n prototype: Console;\n new(stdout: WritableStream, stderr?: WritableStream): Console;\n }\n\n export interface CallSite {\n /**\n * Value of "this"\n */\n getThis(): any;\n\n /**\n * Type of "this" as a string.\n * This is the name of the function stored in the constructor field of\n * "this", if available. Otherwise the object\'s [[Class]] internal\n * property.\n */\n getTypeName(): string | null;\n\n /**\n * Current function\n */\n getFunction(): Function | undefined;\n\n /**\n * Name of the current function, typically its name property.\n * If a name property is not available an attempt will be made to try\n * to infer a name from the function\'s context.\n */\n getFunctionName(): string | null;\n\n /**\n * Name of the property [of "this" or one of its prototypes] that holds\n * the current function\n */\n getMethodName(): string | null;\n\n /**\n * Name of the script [if this function was defined in a script]\n */\n getFileName(): string | null;\n\n /**\n * Current line number [if this function was defined in a script]\n */\n getLineNumber(): number | null;\n\n /**\n * Current column number [if this function was defined in a script]\n */\n getColumnNumber(): number | null;\n\n /**\n * A call site object representing the location where eval was called\n * [if this function was created using a call to eval]\n */\n getEvalOrigin(): string | undefined;\n\n /**\n * Is this a toplevel invocation, that is, is "this" the global object?\n */\n isToplevel(): boolean;\n\n /**\n * Does this call take place in code defined by a call to eval?\n */\n isEval(): boolean;\n\n /**\n * Is this call in native V8 code?\n */\n isNative(): boolean;\n\n /**\n * Is this a constructor call?\n */\n isConstructor(): boolean;\n }\n\n export interface ErrnoException extends Error {\n errno?: number;\n code?: string;\n path?: string;\n syscall?: string;\n stack?: string;\n }\n\n export class EventEmitter {\n addListener(event: string | symbol, listener: (...args: any[]) => void): this;\n on(event: string | symbol, listener: (...args: any[]) => void): this;\n once(event: string | symbol, listener: (...args: any[]) => void): this;\n removeListener(event: string | symbol, listener: (...args: any[]) => void): this;\n removeAllListeners(event?: string | symbol): this;\n setMaxListeners(n: number): this;\n getMaxListeners(): number;\n listeners(event: string | symbol): Function[];\n emit(event: string | symbol, ...args: any[]): boolean;\n listenerCount(type: string | symbol): number;\n // Added in Node 6...\n prependListener(event: string | symbol, listener: (...args: any[]) => void): this;\n prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;\n eventNames(): Array;\n }\n\n export interface ReadableStream extends EventEmitter {\n readable: boolean;\n read(size?: number): string | Buffer;\n setEncoding(encoding: string): this;\n pause(): this;\n resume(): this;\n isPaused(): boolean;\n pipe(destination: T, options?: { end?: boolean; }): T;\n unpipe(destination?: T): this;\n unshift(chunk: string): void;\n unshift(chunk: Buffer): void;\n wrap(oldStream: ReadableStream): this;\n }\n\n export interface WritableStream extends EventEmitter {\n writable: boolean;\n write(buffer: Buffer | string, cb?: Function): boolean;\n write(str: string, encoding?: string, cb?: Function): boolean;\n end(cb?: Function): void;\n end(buffer: Buffer, cb?: Function): void;\n end(str: string, cb?: Function): void;\n end(str: string, encoding?: string, cb?: Function): void;\n }\n\n export interface ReadWriteStream extends ReadableStream, WritableStream { }\n\n export interface Events extends EventEmitter { }\n\n export interface Domain extends Events {\n run(fn: Function): void;\n add(emitter: Events): void;\n remove(emitter: Events): void;\n bind(cb: (err: Error, data: any) => any): any;\n intercept(cb: (data: any) => any): any;\n dispose(): void;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n on(event: string, listener: (...args: any[]) => void): this;\n once(event: string, listener: (...args: any[]) => void): this;\n removeListener(event: string, listener: (...args: any[]) => void): this;\n removeAllListeners(event?: string): this;\n }\n\n export interface MemoryUsage {\n rss: number;\n heapTotal: number;\n heapUsed: number;\n external: number;\n }\n\n export interface CpuUsage {\n user: number;\n system: number;\n }\n\n export interface ProcessVersions {\n http_parser: string;\n node: string;\n v8: string;\n ares: string;\n uv: string;\n zlib: string;\n modules: string;\n openssl: string;\n }\n\n type Platform = \'aix\'\n | \'android\'\n | \'darwin\'\n | \'freebsd\'\n | \'linux\'\n | \'openbsd\'\n | \'sunos\'\n | \'win32\'\n | \'cygwin\';\n\n type Signals =\n "SIGABRT" | "SIGALRM" | "SIGBUS" | "SIGCHLD" | "SIGCONT" | "SIGFPE" | "SIGHUP" | "SIGILL" | "SIGINT" | "SIGIO" |\n "SIGIOT" | "SIGKILL" | "SIGPIPE" | "SIGPOLL" | "SIGPROF" | "SIGPWR" | "SIGQUIT" | "SIGSEGV" | "SIGSTKFLT" |\n "SIGSTOP" | "SIGSYS" | "SIGTERM" | "SIGTRAP" | "SIGTSTP" | "SIGTTIN" | "SIGTTOU" | "SIGUNUSED" | "SIGURG" |\n "SIGUSR1" | "SIGUSR2" | "SIGVTALRM" | "SIGWINCH" | "SIGXCPU" | "SIGXFSZ" | "SIGBREAK" | "SIGLOST" | "SIGINFO";\n\n type BeforeExitListener = (code: number) => void;\n type DisconnectListener = () => void;\n type ExitListener = (code: number) => void;\n type RejectionHandledListener = (promise: Promise) => void;\n type UncaughtExceptionListener = (error: Error) => void;\n type UnhandledRejectionListener = (reason: any, promise: Promise) => void;\n type WarningListener = (warning: Error) => void;\n type MessageListener = (message: any, sendHandle: any) => void;\n type SignalsListener = () => void;\n type NewListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void;\n type RemoveListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void;\n\n export interface Socket extends ReadWriteStream {\n isTTY?: true;\n }\n\n export interface ProcessEnv {\n [key: string]: string | undefined;\n }\n\n export interface WriteStream extends Socket {\n readonly writableHighWaterMark: number;\n columns?: number;\n rows?: number;\n _write(chunk: any, encoding: string, callback: Function): void;\n _destroy(err: Error, callback: Function): void;\n _final(callback: Function): void;\n setDefaultEncoding(encoding: string): this;\n cork(): void;\n uncork(): void;\n destroy(error?: Error): void;\n }\n export interface ReadStream extends Socket {\n readonly readableHighWaterMark: number;\n isRaw?: boolean;\n setRawMode?(mode: boolean): void;\n _read(size: number): void;\n _destroy(err: Error, callback: Function): void;\n push(chunk: any, encoding?: string): boolean;\n destroy(error?: Error): void;\n }\n\n export interface Process extends EventEmitter {\n stdout: WriteStream;\n stderr: WriteStream;\n stdin: ReadStream;\n openStdin(): Socket;\n argv: string[];\n argv0: string;\n execArgv: string[];\n execPath: string;\n abort(): void;\n chdir(directory: string): void;\n cwd(): string;\n debugPort: number;\n emitWarning(warning: string | Error, name?: string, ctor?: Function): void;\n env: ProcessEnv;\n exit(code?: number): never;\n exitCode: number;\n getgid(): number;\n setgid(id: number | string): void;\n getuid(): number;\n setuid(id: number | string): void;\n geteuid(): number;\n seteuid(id: number | string): void;\n getegid(): number;\n setegid(id: number | string): void;\n getgroups(): number[];\n setgroups(groups: Array): void;\n version: string;\n versions: ProcessVersions;\n config: {\n target_defaults: {\n cflags: any[];\n default_configuration: string;\n defines: string[];\n include_dirs: string[];\n libraries: string[];\n };\n variables: {\n clang: number;\n host_arch: string;\n node_install_npm: boolean;\n node_install_waf: boolean;\n node_prefix: string;\n node_shared_openssl: boolean;\n node_shared_v8: boolean;\n node_shared_zlib: boolean;\n node_use_dtrace: boolean;\n node_use_etw: boolean;\n node_use_openssl: boolean;\n target_arch: string;\n v8_no_strict_aliasing: number;\n v8_use_snapshot: boolean;\n visibility: string;\n };\n };\n kill(pid: number, signal?: string | number): void;\n pid: number;\n title: string;\n arch: string;\n platform: Platform;\n mainModule?: NodeModule;\n memoryUsage(): MemoryUsage;\n cpuUsage(previousValue?: CpuUsage): CpuUsage;\n nextTick(callback: Function, ...args: any[]): void;\n umask(mask?: number): number;\n uptime(): number;\n hrtime(time?: [number, number]): [number, number];\n domain: Domain;\n\n // Worker\n send?(message: any, sendHandle?: any): void;\n disconnect(): void;\n connected: boolean;\n\n /**\n * EventEmitter\n * 1. beforeExit\n * 2. disconnect\n * 3. exit\n * 4. message\n * 5. rejectionHandled\n * 6. uncaughtException\n * 7. unhandledRejection\n * 8. warning\n * 9. message\n * 10. \n * 11. newListener/removeListener inherited from EventEmitter\n */\n addListener(event: "beforeExit", listener: BeforeExitListener): this;\n addListener(event: "disconnect", listener: DisconnectListener): this;\n addListener(event: "exit", listener: ExitListener): this;\n addListener(event: "rejectionHandled", listener: RejectionHandledListener): this;\n addListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;\n addListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;\n addListener(event: "warning", listener: WarningListener): this;\n addListener(event: "message", listener: MessageListener): this;\n addListener(event: Signals, listener: SignalsListener): this;\n addListener(event: "newListener", listener: NewListenerListener): this;\n addListener(event: "removeListener", listener: RemoveListenerListener): this;\n\n emit(event: "beforeExit", code: number): boolean;\n emit(event: "disconnect"): boolean;\n emit(event: "exit", code: number): boolean;\n emit(event: "rejectionHandled", promise: Promise): boolean;\n emit(event: "uncaughtException", error: Error): boolean;\n emit(event: "unhandledRejection", reason: any, promise: Promise): boolean;\n emit(event: "warning", warning: Error): boolean;\n emit(event: "message", message: any, sendHandle: any): this;\n emit(event: Signals): boolean;\n emit(event: "newListener", eventName: string | symbol, listener: (...args: any[]) => void): this;\n emit(event: "removeListener", eventName: string, listener: (...args: any[]) => void): this;\n\n on(event: "beforeExit", listener: BeforeExitListener): this;\n on(event: "disconnect", listener: DisconnectListener): this;\n on(event: "exit", listener: ExitListener): this;\n on(event: "rejectionHandled", listener: RejectionHandledListener): this;\n on(event: "uncaughtException", listener: UncaughtExceptionListener): this;\n on(event: "unhandledRejection", listener: UnhandledRejectionListener): this;\n on(event: "warning", listener: WarningListener): this;\n on(event: "message", listener: MessageListener): this;\n on(event: Signals, listener: SignalsListener): this;\n on(event: "newListener", listener: NewListenerListener): this;\n on(event: "removeListener", listener: RemoveListenerListener): this;\n\n once(event: "beforeExit", listener: BeforeExitListener): this;\n once(event: "disconnect", listener: DisconnectListener): this;\n once(event: "exit", listener: ExitListener): this;\n once(event: "rejectionHandled", listener: RejectionHandledListener): this;\n once(event: "uncaughtException", listener: UncaughtExceptionListener): this;\n once(event: "unhandledRejection", listener: UnhandledRejectionListener): this;\n once(event: "warning", listener: WarningListener): this;\n once(event: "message", listener: MessageListener): this;\n once(event: Signals, listener: SignalsListener): this;\n once(event: "newListener", listener: NewListenerListener): this;\n once(event: "removeListener", listener: RemoveListenerListener): this;\n\n prependListener(event: "beforeExit", listener: BeforeExitListener): this;\n prependListener(event: "disconnect", listener: DisconnectListener): this;\n prependListener(event: "exit", listener: ExitListener): this;\n prependListener(event: "rejectionHandled", listener: RejectionHandledListener): this;\n prependListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;\n prependListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;\n prependListener(event: "warning", listener: WarningListener): this;\n prependListener(event: "message", listener: MessageListener): this;\n prependListener(event: Signals, listener: SignalsListener): this;\n prependListener(event: "newListener", listener: NewListenerListener): this;\n prependListener(event: "removeListener", listener: RemoveListenerListener): this;\n\n prependOnceListener(event: "beforeExit", listener: BeforeExitListener): this;\n prependOnceListener(event: "disconnect", listener: DisconnectListener): this;\n prependOnceListener(event: "exit", listener: ExitListener): this;\n prependOnceListener(event: "rejectionHandled", listener: RejectionHandledListener): this;\n prependOnceListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;\n prependOnceListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;\n prependOnceListener(event: "warning", listener: WarningListener): this;\n prependOnceListener(event: "message", listener: MessageListener): this;\n prependOnceListener(event: Signals, listener: SignalsListener): this;\n prependOnceListener(event: "newListener", listener: NewListenerListener): this;\n prependOnceListener(event: "removeListener", listener: RemoveListenerListener): this;\n\n listeners(event: "beforeExit"): BeforeExitListener[];\n listeners(event: "disconnect"): DisconnectListener[];\n listeners(event: "exit"): ExitListener[];\n listeners(event: "rejectionHandled"): RejectionHandledListener[];\n listeners(event: "uncaughtException"): UncaughtExceptionListener[];\n listeners(event: "unhandledRejection"): UnhandledRejectionListener[];\n listeners(event: "warning"): WarningListener[];\n listeners(event: "message"): MessageListener[];\n listeners(event: Signals): SignalsListener[];\n listeners(event: "newListener"): NewListenerListener[];\n listeners(event: "removeListener"): RemoveListenerListener[];\n }\n\n export interface Global {\n Array: typeof Array;\n ArrayBuffer: typeof ArrayBuffer;\n Boolean: typeof Boolean;\n Buffer: typeof Buffer;\n DataView: typeof DataView;\n Date: typeof Date;\n Error: typeof Error;\n EvalError: typeof EvalError;\n Float32Array: typeof Float32Array;\n Float64Array: typeof Float64Array;\n Function: typeof Function;\n GLOBAL: Global;\n Infinity: typeof Infinity;\n Int16Array: typeof Int16Array;\n Int32Array: typeof Int32Array;\n Int8Array: typeof Int8Array;\n Intl: typeof Intl;\n JSON: typeof JSON;\n Map: MapConstructor;\n Math: typeof Math;\n NaN: typeof NaN;\n Number: typeof Number;\n Object: typeof Object;\n Promise: Function;\n RangeError: typeof RangeError;\n ReferenceError: typeof ReferenceError;\n RegExp: typeof RegExp;\n Set: SetConstructor;\n String: typeof String;\n Symbol: Function;\n SyntaxError: typeof SyntaxError;\n TypeError: typeof TypeError;\n URIError: typeof URIError;\n Uint16Array: typeof Uint16Array;\n Uint32Array: typeof Uint32Array;\n Uint8Array: typeof Uint8Array;\n Uint8ClampedArray: Function;\n WeakMap: WeakMapConstructor;\n WeakSet: WeakSetConstructor;\n clearImmediate: (immediateId: any) => void;\n clearInterval: (intervalId: NodeJS.Timer) => void;\n clearTimeout: (timeoutId: NodeJS.Timer) => void;\n console: typeof console;\n decodeURI: typeof decodeURI;\n decodeURIComponent: typeof decodeURIComponent;\n encodeURI: typeof encodeURI;\n encodeURIComponent: typeof encodeURIComponent;\n escape: (str: string) => string;\n eval: typeof eval;\n global: Global;\n isFinite: typeof isFinite;\n isNaN: typeof isNaN;\n parseFloat: typeof parseFloat;\n parseInt: typeof parseInt;\n process: Process;\n root: Global;\n setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => any;\n setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer;\n setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer;\n undefined: typeof undefined;\n unescape: (str: string) => string;\n gc: () => void;\n v8debug?: any;\n }\n\n export interface Timer {\n ref(): void;\n unref(): void;\n }\n\n class Module {\n static runMain(): void;\n static wrap(code: string): string;\n static builtinModules: string[];\n\n static Module: typeof Module;\n\n exports: any;\n require: NodeRequireFunction;\n id: string;\n filename: string;\n loaded: boolean;\n parent: Module | null;\n children: Module[];\n paths: string[];\n\n constructor(id: string, parent?: Module);\n }\n}\n\ninterface IterableIterator { }\n\n/**\n * @deprecated\n */\ninterface NodeBuffer extends Uint8Array {\n write(string: string, offset?: number, length?: number, encoding?: string): number;\n toString(encoding?: string, start?: number, end?: number): string;\n toJSON(): { type: \'Buffer\', data: any[] };\n equals(otherBuffer: Buffer): boolean;\n compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;\n copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;\n slice(start?: number, end?: number): Buffer;\n writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;\n writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;\n writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;\n writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;\n readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number;\n readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number;\n readIntLE(offset: number, byteLength: number, noAssert?: boolean): number;\n readIntBE(offset: number, byteLength: number, noAssert?: boolean): number;\n readUInt8(offset: number, noAssert?: boolean): number;\n readUInt16LE(offset: number, noAssert?: boolean): number;\n readUInt16BE(offset: number, noAssert?: boolean): number;\n readUInt32LE(offset: number, noAssert?: boolean): number;\n readUInt32BE(offset: number, noAssert?: boolean): number;\n readInt8(offset: number, noAssert?: boolean): number;\n readInt16LE(offset: number, noAssert?: boolean): number;\n readInt16BE(offset: number, noAssert?: boolean): number;\n readInt32LE(offset: number, noAssert?: boolean): number;\n readInt32BE(offset: number, noAssert?: boolean): number;\n readFloatLE(offset: number, noAssert?: boolean): number;\n readFloatBE(offset: number, noAssert?: boolean): number;\n readDoubleLE(offset: number, noAssert?: boolean): number;\n readDoubleBE(offset: number, noAssert?: boolean): number;\n swap16(): Buffer;\n swap32(): Buffer;\n swap64(): Buffer;\n writeUInt8(value: number, offset: number, noAssert?: boolean): number;\n writeUInt16LE(value: number, offset: number, noAssert?: boolean): number;\n writeUInt16BE(value: number, offset: number, noAssert?: boolean): number;\n writeUInt32LE(value: number, offset: number, noAssert?: boolean): number;\n writeUInt32BE(value: number, offset: number, noAssert?: boolean): number;\n writeInt8(value: number, offset: number, noAssert?: boolean): number;\n writeInt16LE(value: number, offset: number, noAssert?: boolean): number;\n writeInt16BE(value: number, offset: number, noAssert?: boolean): number;\n writeInt32LE(value: number, offset: number, noAssert?: boolean): number;\n writeInt32BE(value: number, offset: number, noAssert?: boolean): number;\n writeFloatLE(value: number, offset: number, noAssert?: boolean): number;\n writeFloatBE(value: number, offset: number, noAssert?: boolean): number;\n writeDoubleLE(value: number, offset: number, noAssert?: boolean): number;\n writeDoubleBE(value: number, offset: number, noAssert?: boolean): number;\n fill(value: any, offset?: number, end?: number): this;\n indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;\n lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;\n entries(): IterableIterator<[number, number]>;\n includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean;\n keys(): IterableIterator;\n values(): IterableIterator;\n}\n\n/************************************************\n* *\n* MODULES *\n* *\n************************************************/\ndeclare module "buffer" {\n export var INSPECT_MAX_BYTES: number;\n var BuffType: typeof Buffer;\n var SlowBuffType: typeof SlowBuffer;\n export { BuffType as Buffer, SlowBuffType as SlowBuffer };\n}\n\ndeclare module "querystring" {\n export interface StringifyOptions {\n encodeURIComponent?: Function;\n }\n\n export interface ParseOptions {\n maxKeys?: number;\n decodeURIComponent?: Function;\n }\n\n interface ParsedUrlQuery { [key: string]: string | string[] | undefined; }\n\n export function stringify(obj: T, sep?: string, eq?: string, options?: StringifyOptions): string;\n export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): ParsedUrlQuery;\n export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): T;\n export function escape(str: string): string;\n export function unescape(str: string): string;\n}\n\ndeclare module "events" {\n class internal extends NodeJS.EventEmitter { }\n\n namespace internal {\n export class EventEmitter extends internal {\n static listenerCount(emitter: EventEmitter, event: string | symbol): number; // deprecated\n static defaultMaxListeners: number;\n\n addListener(event: string | symbol, listener: (...args: any[]) => void): this;\n on(event: string | symbol, listener: (...args: any[]) => void): this;\n once(event: string | symbol, listener: (...args: any[]) => void): this;\n prependListener(event: string | symbol, listener: (...args: any[]) => void): this;\n prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;\n removeListener(event: string | symbol, listener: (...args: any[]) => void): this;\n removeAllListeners(event?: string | symbol): this;\n setMaxListeners(n: number): this;\n getMaxListeners(): number;\n listeners(event: string | symbol): Function[];\n emit(event: string | symbol, ...args: any[]): boolean;\n eventNames(): Array;\n listenerCount(type: string | symbol): number;\n }\n }\n\n export = internal;\n}\n\ndeclare module "http" {\n import * as events from "events";\n import * as net from "net";\n import * as stream from "stream";\n import { URL } from "url";\n\n // incoming headers will never contain number\n export interface IncomingHttpHeaders {\n \'accept\'?: string;\n \'access-control-allow-origin\'?: string;\n \'access-control-allow-credentials\'?: string;\n \'access-control-expose-headers\'?: string;\n \'access-control-max-age\'?: string;\n \'access-control-allow-methods\'?: string;\n \'access-control-allow-headers\'?: string;\n \'accept-patch\'?: string;\n \'accept-ranges\'?: string;\n \'authorization\'?: string;\n \'age\'?: string;\n \'allow\'?: string;\n \'alt-svc\'?: string;\n \'cache-control\'?: string;\n \'connection\'?: string;\n \'content-disposition\'?: string;\n \'content-encoding\'?: string;\n \'content-language\'?: string;\n \'content-length\'?: string;\n \'content-location\'?: string;\n \'content-range\'?: string;\n \'content-type\'?: string;\n \'date\'?: string;\n \'expires\'?: string;\n \'host\'?: string;\n \'last-modified\'?: string;\n \'location\'?: string;\n \'pragma\'?: string;\n \'proxy-authenticate\'?: string;\n \'public-key-pins\'?: string;\n \'retry-after\'?: string;\n \'set-cookie\'?: string[];\n \'strict-transport-security\'?: string;\n \'trailer\'?: string;\n \'transfer-encoding\'?: string;\n \'tk\'?: string;\n \'upgrade\'?: string;\n \'vary\'?: string;\n \'via\'?: string;\n \'warning\'?: string;\n \'www-authenticate\'?: string;\n [header: string]: string | string[] | undefined;\n }\n\n // outgoing headers allows numbers (as they are converted internally to strings)\n export interface OutgoingHttpHeaders {\n [header: string]: number | string | string[] | undefined;\n }\n\n export interface ClientRequestArgs {\n protocol?: string;\n host?: string;\n hostname?: string;\n family?: number;\n port?: number | string;\n defaultPort?: number | string;\n localAddress?: string;\n socketPath?: string;\n method?: string;\n path?: string;\n headers?: OutgoingHttpHeaders;\n auth?: string;\n agent?: Agent | boolean;\n _defaultAgent?: Agent;\n timeout?: number;\n // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L278\n createConnection?: (options: ClientRequestArgs, oncreate: (err: Error, socket: net.Socket) => void) => net.Socket;\n }\n\n export class Server extends net.Server {\n constructor(requestListener?: (req: IncomingMessage, res: ServerResponse) => void);\n\n setTimeout(msecs?: number, callback?: () => void): this;\n setTimeout(callback: () => void): this;\n maxHeadersCount: number;\n timeout: number;\n keepAliveTimeout: number;\n }\n /**\n * @deprecated Use IncomingMessage\n */\n export class ServerRequest extends IncomingMessage {\n connection: net.Socket;\n }\n\n // https://github.com/nodejs/node/blob/master/lib/_http_outgoing.js\n export class OutgoingMessage extends stream.Writable {\n upgrading: boolean;\n chunkedEncoding: boolean;\n shouldKeepAlive: boolean;\n useChunkedEncodingByDefault: boolean;\n sendDate: boolean;\n finished: boolean;\n headersSent: boolean;\n connection: net.Socket;\n\n constructor();\n\n setTimeout(msecs: number, callback?: () => void): this;\n destroy(error: Error): void;\n setHeader(name: string, value: number | string | string[]): void;\n getHeader(name: string): number | string | string[] | undefined;\n getHeaders(): OutgoingHttpHeaders;\n getHeaderNames(): string[];\n hasHeader(name: string): boolean;\n removeHeader(name: string): void;\n addTrailers(headers: OutgoingHttpHeaders | Array<[string, string]>): void;\n flushHeaders(): void;\n }\n\n // https://github.com/nodejs/node/blob/master/lib/_http_server.js#L108-L256\n export class ServerResponse extends OutgoingMessage {\n statusCode: number;\n statusMessage: string;\n\n constructor(req: IncomingMessage);\n\n assignSocket(socket: net.Socket): void;\n detachSocket(socket: net.Socket): void;\n // https://github.com/nodejs/node/blob/master/test/parallel/test-http-write-callbacks.js#L53\n // no args in writeContinue callback\n writeContinue(callback?: () => void): void;\n writeHead(statusCode: number, reasonPhrase?: string, headers?: OutgoingHttpHeaders): void;\n writeHead(statusCode: number, headers?: OutgoingHttpHeaders): void;\n }\n\n // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L77\n export class ClientRequest extends OutgoingMessage {\n connection: net.Socket;\n socket: net.Socket;\n aborted: number;\n\n constructor(url: string | URL | ClientRequestArgs, cb?: (res: IncomingMessage) => void);\n\n abort(): void;\n onSocket(socket: net.Socket): void;\n setTimeout(timeout: number, callback?: () => void): this;\n setNoDelay(noDelay?: boolean): void;\n setSocketKeepAlive(enable?: boolean, initialDelay?: number): void;\n }\n\n export class IncomingMessage extends stream.Readable {\n constructor(socket: net.Socket);\n\n httpVersion: string;\n httpVersionMajor: number;\n httpVersionMinor: number;\n connection: net.Socket;\n headers: IncomingHttpHeaders;\n rawHeaders: string[];\n trailers: { [key: string]: string | undefined };\n rawTrailers: string[];\n setTimeout(msecs: number, callback: () => void): this;\n /**\n * Only valid for request obtained from http.Server.\n */\n method?: string;\n /**\n * Only valid for request obtained from http.Server.\n */\n url?: string;\n /**\n * Only valid for response obtained from http.ClientRequest.\n */\n statusCode?: number;\n /**\n * Only valid for response obtained from http.ClientRequest.\n */\n statusMessage?: string;\n socket: net.Socket;\n destroy(error?: Error): void;\n }\n\n /**\n * @deprecated Use IncomingMessage\n */\n export class ClientResponse extends IncomingMessage { }\n\n export interface AgentOptions {\n /**\n * Keep sockets around in a pool to be used by other requests in the future. Default = false\n */\n keepAlive?: boolean;\n /**\n * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000.\n * Only relevant if keepAlive is set to true.\n */\n keepAliveMsecs?: number;\n /**\n * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity\n */\n maxSockets?: number;\n /**\n * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256.\n */\n maxFreeSockets?: number;\n }\n\n export class Agent {\n maxFreeSockets: number;\n maxSockets: number;\n sockets: any;\n requests: any;\n\n constructor(opts?: AgentOptions);\n\n /**\n * Destroy any sockets that are currently in use by the agent.\n * It is usually not necessary to do this. However, if you are using an agent with KeepAlive enabled,\n * then it is best to explicitly shut down the agent when you know that it will no longer be used. Otherwise,\n * sockets may hang open for quite a long time before the server terminates them.\n */\n destroy(): void;\n }\n\n export var METHODS: string[];\n\n export var STATUS_CODES: {\n [errorCode: number]: string | undefined;\n [errorCode: string]: string | undefined;\n };\n\n export function createServer(requestListener?: (request: IncomingMessage, response: ServerResponse) => void): Server;\n export function createClient(port?: number, host?: string): any;\n\n // although RequestOptions are passed as ClientRequestArgs to ClientRequest directly,\n // create interface RequestOptions would make the naming more clear to developers\n export interface RequestOptions extends ClientRequestArgs { }\n export function request(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest;\n export function get(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest;\n export var globalAgent: Agent;\n}\n\ndeclare module "cluster" {\n import * as child from "child_process";\n import * as events from "events";\n import * as net from "net";\n\n // interfaces\n export interface ClusterSettings {\n execArgv?: string[]; // default: process.execArgv\n exec?: string;\n args?: string[];\n silent?: boolean;\n stdio?: any[];\n uid?: number;\n gid?: number;\n inspectPort?: number | (() => number);\n }\n\n export interface Address {\n address: string;\n port: number;\n addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6"\n }\n\n export class Worker extends events.EventEmitter {\n id: number;\n process: child.ChildProcess;\n suicide: boolean;\n send(message: any, sendHandle?: any, callback?: (error: Error) => void): boolean;\n kill(signal?: string): void;\n destroy(signal?: string): void;\n disconnect(): void;\n isConnected(): boolean;\n isDead(): boolean;\n exitedAfterDisconnect: boolean;\n\n /**\n * events.EventEmitter\n * 1. disconnect\n * 2. error\n * 3. exit\n * 4. listening\n * 5. message\n * 6. online\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "disconnect", listener: () => void): this;\n addListener(event: "error", listener: (error: Error) => void): this;\n addListener(event: "exit", listener: (code: number, signal: string) => void): this;\n addListener(event: "listening", listener: (address: Address) => void): this;\n addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n addListener(event: "online", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "disconnect"): boolean;\n emit(event: "error", error: Error): boolean;\n emit(event: "exit", code: number, signal: string): boolean;\n emit(event: "listening", address: Address): boolean;\n emit(event: "message", message: any, handle: net.Socket | net.Server): boolean;\n emit(event: "online"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "disconnect", listener: () => void): this;\n on(event: "error", listener: (error: Error) => void): this;\n on(event: "exit", listener: (code: number, signal: string) => void): this;\n on(event: "listening", listener: (address: Address) => void): this;\n on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n on(event: "online", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "disconnect", listener: () => void): this;\n once(event: "error", listener: (error: Error) => void): this;\n once(event: "exit", listener: (code: number, signal: string) => void): this;\n once(event: "listening", listener: (address: Address) => void): this;\n once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n once(event: "online", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "disconnect", listener: () => void): this;\n prependListener(event: "error", listener: (error: Error) => void): this;\n prependListener(event: "exit", listener: (code: number, signal: string) => void): this;\n prependListener(event: "listening", listener: (address: Address) => void): this;\n prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n prependListener(event: "online", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "disconnect", listener: () => void): this;\n prependOnceListener(event: "error", listener: (error: Error) => void): this;\n prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this;\n prependOnceListener(event: "listening", listener: (address: Address) => void): this;\n prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n prependOnceListener(event: "online", listener: () => void): this;\n }\n\n export interface Cluster extends events.EventEmitter {\n Worker: Worker;\n disconnect(callback?: Function): void;\n fork(env?: any): Worker;\n isMaster: boolean;\n isWorker: boolean;\n // TODO: cluster.schedulingPolicy\n settings: ClusterSettings;\n setupMaster(settings?: ClusterSettings): void;\n worker?: Worker;\n workers?: {\n [index: string]: Worker | undefined\n };\n\n /**\n * events.EventEmitter\n * 1. disconnect\n * 2. exit\n * 3. fork\n * 4. listening\n * 5. message\n * 6. online\n * 7. setup\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "disconnect", listener: (worker: Worker) => void): this;\n addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;\n addListener(event: "fork", listener: (worker: Worker) => void): this;\n addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;\n addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n addListener(event: "online", listener: (worker: Worker) => void): this;\n addListener(event: "setup", listener: (settings: any) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "disconnect", worker: Worker): boolean;\n emit(event: "exit", worker: Worker, code: number, signal: string): boolean;\n emit(event: "fork", worker: Worker): boolean;\n emit(event: "listening", worker: Worker, address: Address): boolean;\n emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;\n emit(event: "online", worker: Worker): boolean;\n emit(event: "setup", settings: any): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "disconnect", listener: (worker: Worker) => void): this;\n on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;\n on(event: "fork", listener: (worker: Worker) => void): this;\n on(event: "listening", listener: (worker: Worker, address: Address) => void): this;\n on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n on(event: "online", listener: (worker: Worker) => void): this;\n on(event: "setup", listener: (settings: any) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "disconnect", listener: (worker: Worker) => void): this;\n once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;\n once(event: "fork", listener: (worker: Worker) => void): this;\n once(event: "listening", listener: (worker: Worker, address: Address) => void): this;\n once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n once(event: "online", listener: (worker: Worker) => void): this;\n once(event: "setup", listener: (settings: any) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "disconnect", listener: (worker: Worker) => void): this;\n prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;\n prependListener(event: "fork", listener: (worker: Worker) => void): this;\n prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;\n prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n prependListener(event: "online", listener: (worker: Worker) => void): this;\n prependListener(event: "setup", listener: (settings: any) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this;\n prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;\n prependOnceListener(event: "fork", listener: (worker: Worker) => void): this;\n prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;\n prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n prependOnceListener(event: "online", listener: (worker: Worker) => void): this;\n prependOnceListener(event: "setup", listener: (settings: any) => void): this;\n }\n\n export function disconnect(callback?: Function): void;\n export function fork(env?: any): Worker;\n export var isMaster: boolean;\n export var isWorker: boolean;\n // TODO: cluster.schedulingPolicy\n export var settings: ClusterSettings;\n export function setupMaster(settings?: ClusterSettings): void;\n export var worker: Worker;\n export var workers: {\n [index: string]: Worker | undefined\n };\n\n /**\n * events.EventEmitter\n * 1. disconnect\n * 2. exit\n * 3. fork\n * 4. listening\n * 5. message\n * 6. online\n * 7. setup\n */\n export function addListener(event: string, listener: (...args: any[]) => void): Cluster;\n export function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;\n export function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;\n export function addListener(event: "fork", listener: (worker: Worker) => void): Cluster;\n export function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;\n export function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.\n export function addListener(event: "online", listener: (worker: Worker) => void): Cluster;\n export function addListener(event: "setup", listener: (settings: any) => void): Cluster;\n\n export function emit(event: string | symbol, ...args: any[]): boolean;\n export function emit(event: "disconnect", worker: Worker): boolean;\n export function emit(event: "exit", worker: Worker, code: number, signal: string): boolean;\n export function emit(event: "fork", worker: Worker): boolean;\n export function emit(event: "listening", worker: Worker, address: Address): boolean;\n export function emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;\n export function emit(event: "online", worker: Worker): boolean;\n export function emit(event: "setup", settings: any): boolean;\n\n export function on(event: string, listener: (...args: any[]) => void): Cluster;\n export function on(event: "disconnect", listener: (worker: Worker) => void): Cluster;\n export function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;\n export function on(event: "fork", listener: (worker: Worker) => void): Cluster;\n export function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;\n export function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.\n export function on(event: "online", listener: (worker: Worker) => void): Cluster;\n export function on(event: "setup", listener: (settings: any) => void): Cluster;\n\n export function once(event: string, listener: (...args: any[]) => void): Cluster;\n export function once(event: "disconnect", listener: (worker: Worker) => void): Cluster;\n export function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;\n export function once(event: "fork", listener: (worker: Worker) => void): Cluster;\n export function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;\n export function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.\n export function once(event: "online", listener: (worker: Worker) => void): Cluster;\n export function once(event: "setup", listener: (settings: any) => void): Cluster;\n\n export function removeListener(event: string, listener: (...args: any[]) => void): Cluster;\n export function removeAllListeners(event?: string): Cluster;\n export function setMaxListeners(n: number): Cluster;\n export function getMaxListeners(): number;\n export function listeners(event: string): Function[];\n export function listenerCount(type: string): number;\n\n export function prependListener(event: string, listener: (...args: any[]) => void): Cluster;\n export function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;\n export function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;\n export function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster;\n export function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;\n export function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.\n export function prependListener(event: "online", listener: (worker: Worker) => void): Cluster;\n export function prependListener(event: "setup", listener: (settings: any) => void): Cluster;\n\n export function prependOnceListener(event: string, listener: (...args: any[]) => void): Cluster;\n export function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;\n export function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;\n export function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster;\n export function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;\n export function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.\n export function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster;\n export function prependOnceListener(event: "setup", listener: (settings: any) => void): Cluster;\n\n export function eventNames(): string[];\n}\n\ndeclare module "zlib" {\n import * as stream from "stream";\n\n export interface ZlibOptions {\n flush?: number; // default: zlib.constants.Z_NO_FLUSH\n finishFlush?: number; // default: zlib.constants.Z_FINISH\n chunkSize?: number; // default: 16*1024\n windowBits?: number;\n level?: number; // compression only\n memLevel?: number; // compression only\n strategy?: number; // compression only\n dictionary?: any; // deflate/inflate only, empty dictionary by default\n }\n\n export interface Zlib {\n readonly bytesRead: number;\n close(callback?: () => void): void;\n flush(kind?: number | (() => void), callback?: () => void): void;\n }\n\n export interface ZlibParams {\n params(level: number, strategy: number, callback: () => void): void;\n }\n\n export interface ZlibReset {\n reset(): void;\n }\n\n export interface Gzip extends stream.Transform, Zlib { }\n export interface Gunzip extends stream.Transform, Zlib { }\n export interface Deflate extends stream.Transform, Zlib, ZlibReset, ZlibParams { }\n export interface Inflate extends stream.Transform, Zlib, ZlibReset { }\n export interface DeflateRaw extends stream.Transform, Zlib, ZlibReset, ZlibParams { }\n export interface InflateRaw extends stream.Transform, Zlib, ZlibReset { }\n export interface Unzip extends stream.Transform, Zlib { }\n\n export function createGzip(options?: ZlibOptions): Gzip;\n export function createGunzip(options?: ZlibOptions): Gunzip;\n export function createDeflate(options?: ZlibOptions): Deflate;\n export function createInflate(options?: ZlibOptions): Inflate;\n export function createDeflateRaw(options?: ZlibOptions): DeflateRaw;\n export function createInflateRaw(options?: ZlibOptions): InflateRaw;\n export function createUnzip(options?: ZlibOptions): Unzip;\n\n type InputType = string | Buffer | DataView /* | TypedArray */;\n export function deflate(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function deflate(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function deflateSync(buf: InputType, options?: ZlibOptions): Buffer;\n export function deflateRaw(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function deflateRaw(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function deflateRawSync(buf: InputType, options?: ZlibOptions): Buffer;\n export function gzip(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function gzip(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function gzipSync(buf: InputType, options?: ZlibOptions): Buffer;\n export function gunzip(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function gunzip(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function gunzipSync(buf: InputType, options?: ZlibOptions): Buffer;\n export function inflate(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function inflate(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function inflateSync(buf: InputType, options?: ZlibOptions): Buffer;\n export function inflateRaw(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function inflateRaw(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function inflateRawSync(buf: InputType, options?: ZlibOptions): Buffer;\n export function unzip(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function unzip(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function unzipSync(buf: InputType, options?: ZlibOptions): Buffer;\n\n export namespace constants {\n // Allowed flush values.\n\n export const Z_NO_FLUSH: number;\n export const Z_PARTIAL_FLUSH: number;\n export const Z_SYNC_FLUSH: number;\n export const Z_FULL_FLUSH: number;\n export const Z_FINISH: number;\n export const Z_BLOCK: number;\n export const Z_TREES: number;\n\n // Return codes for the compression/decompression functions. Negative values are errors, positive values are used for special but normal events.\n\n export const Z_OK: number;\n export const Z_STREAM_END: number;\n export const Z_NEED_DICT: number;\n export const Z_ERRNO: number;\n export const Z_STREAM_ERROR: number;\n export const Z_DATA_ERROR: number;\n export const Z_MEM_ERROR: number;\n export const Z_BUF_ERROR: number;\n export const Z_VERSION_ERROR: number;\n\n // Compression levels.\n\n export const Z_NO_COMPRESSION: number;\n export const Z_BEST_SPEED: number;\n export const Z_BEST_COMPRESSION: number;\n export const Z_DEFAULT_COMPRESSION: number;\n\n // Compression strategy.\n\n export const Z_FILTERED: number;\n export const Z_HUFFMAN_ONLY: number;\n export const Z_RLE: number;\n export const Z_FIXED: number;\n export const Z_DEFAULT_STRATEGY: number;\n }\n\n // Constants\n export var Z_NO_FLUSH: number;\n export var Z_PARTIAL_FLUSH: number;\n export var Z_SYNC_FLUSH: number;\n export var Z_FULL_FLUSH: number;\n export var Z_FINISH: number;\n export var Z_BLOCK: number;\n export var Z_TREES: number;\n export var Z_OK: number;\n export var Z_STREAM_END: number;\n export var Z_NEED_DICT: number;\n export var Z_ERRNO: number;\n export var Z_STREAM_ERROR: number;\n export var Z_DATA_ERROR: number;\n export var Z_MEM_ERROR: number;\n export var Z_BUF_ERROR: number;\n export var Z_VERSION_ERROR: number;\n export var Z_NO_COMPRESSION: number;\n export var Z_BEST_SPEED: number;\n export var Z_BEST_COMPRESSION: number;\n export var Z_DEFAULT_COMPRESSION: number;\n export var Z_FILTERED: number;\n export var Z_HUFFMAN_ONLY: number;\n export var Z_RLE: number;\n export var Z_FIXED: number;\n export var Z_DEFAULT_STRATEGY: number;\n export var Z_BINARY: number;\n export var Z_TEXT: number;\n export var Z_ASCII: number;\n export var Z_UNKNOWN: number;\n export var Z_DEFLATED: number;\n}\n\ndeclare module "os" {\n export interface CpuInfo {\n model: string;\n speed: number;\n times: {\n user: number;\n nice: number;\n sys: number;\n idle: number;\n irq: number;\n };\n }\n\n export interface NetworkInterfaceBase {\n address: string;\n netmask: string;\n mac: string;\n internal: boolean;\n }\n\n export interface NetworkInterfaceInfoIPv4 extends NetworkInterfaceBase {\n family: "IPv4";\n }\n\n export interface NetworkInterfaceInfoIPv6 extends NetworkInterfaceBase {\n family: "IPv6";\n scopeid: number;\n }\n\n export type NetworkInterfaceInfo = NetworkInterfaceInfoIPv4 | NetworkInterfaceInfoIPv6;\n\n export function hostname(): string;\n export function loadavg(): number[];\n export function uptime(): number;\n export function freemem(): number;\n export function totalmem(): number;\n export function cpus(): CpuInfo[];\n export function type(): string;\n export function release(): string;\n export function networkInterfaces(): { [index: string]: NetworkInterfaceInfo[] };\n export function homedir(): string;\n export function userInfo(options?: { encoding: string }): { username: string, uid: number, gid: number, shell: any, homedir: string };\n export var constants: {\n UV_UDP_REUSEADDR: number,\n signals: {\n SIGHUP: number;\n SIGINT: number;\n SIGQUIT: number;\n SIGILL: number;\n SIGTRAP: number;\n SIGABRT: number;\n SIGIOT: number;\n SIGBUS: number;\n SIGFPE: number;\n SIGKILL: number;\n SIGUSR1: number;\n SIGSEGV: number;\n SIGUSR2: number;\n SIGPIPE: number;\n SIGALRM: number;\n SIGTERM: number;\n SIGCHLD: number;\n SIGSTKFLT: number;\n SIGCONT: number;\n SIGSTOP: number;\n SIGTSTP: number;\n SIGTTIN: number;\n SIGTTOU: number;\n SIGURG: number;\n SIGXCPU: number;\n SIGXFSZ: number;\n SIGVTALRM: number;\n SIGPROF: number;\n SIGWINCH: number;\n SIGIO: number;\n SIGPOLL: number;\n SIGPWR: number;\n SIGSYS: number;\n SIGUNUSED: number;\n },\n errno: {\n E2BIG: number;\n EACCES: number;\n EADDRINUSE: number;\n EADDRNOTAVAIL: number;\n EAFNOSUPPORT: number;\n EAGAIN: number;\n EALREADY: number;\n EBADF: number;\n EBADMSG: number;\n EBUSY: number;\n ECANCELED: number;\n ECHILD: number;\n ECONNABORTED: number;\n ECONNREFUSED: number;\n ECONNRESET: number;\n EDEADLK: number;\n EDESTADDRREQ: number;\n EDOM: number;\n EDQUOT: number;\n EEXIST: number;\n EFAULT: number;\n EFBIG: number;\n EHOSTUNREACH: number;\n EIDRM: number;\n EILSEQ: number;\n EINPROGRESS: number;\n EINTR: number;\n EINVAL: number;\n EIO: number;\n EISCONN: number;\n EISDIR: number;\n ELOOP: number;\n EMFILE: number;\n EMLINK: number;\n EMSGSIZE: number;\n EMULTIHOP: number;\n ENAMETOOLONG: number;\n ENETDOWN: number;\n ENETRESET: number;\n ENETUNREACH: number;\n ENFILE: number;\n ENOBUFS: number;\n ENODATA: number;\n ENODEV: number;\n ENOENT: number;\n ENOEXEC: number;\n ENOLCK: number;\n ENOLINK: number;\n ENOMEM: number;\n ENOMSG: number;\n ENOPROTOOPT: number;\n ENOSPC: number;\n ENOSR: number;\n ENOSTR: number;\n ENOSYS: number;\n ENOTCONN: number;\n ENOTDIR: number;\n ENOTEMPTY: number;\n ENOTSOCK: number;\n ENOTSUP: number;\n ENOTTY: number;\n ENXIO: number;\n EOPNOTSUPP: number;\n EOVERFLOW: number;\n EPERM: number;\n EPIPE: number;\n EPROTO: number;\n EPROTONOSUPPORT: number;\n EPROTOTYPE: number;\n ERANGE: number;\n EROFS: number;\n ESPIPE: number;\n ESRCH: number;\n ESTALE: number;\n ETIME: number;\n ETIMEDOUT: number;\n ETXTBSY: number;\n EWOULDBLOCK: number;\n EXDEV: number;\n },\n };\n export function arch(): string;\n export function platform(): NodeJS.Platform;\n export function tmpdir(): string;\n export const EOL: string;\n export function endianness(): "BE" | "LE";\n}\n\ndeclare module "https" {\n import * as tls from "tls";\n import * as events from "events";\n import * as http from "http";\n import { URL } from "url";\n\n export type ServerOptions = tls.SecureContextOptions & tls.TlsOptions;\n\n // see https://nodejs.org/docs/latest-v8.x/api/https.html#https_https_request_options_callback\n type extendedRequestKeys = "pfx" |\n "key" |\n "passphrase" |\n "cert" |\n "ca" |\n "ciphers" |\n "rejectUnauthorized" |\n "secureProtocol" |\n "servername";\n\n export type RequestOptions = http.RequestOptions & Pick;\n\n export interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions {\n rejectUnauthorized?: boolean;\n maxCachedSessions?: number;\n }\n\n export class Agent extends http.Agent {\n constructor(options?: AgentOptions);\n options: AgentOptions;\n }\n\n export class Server extends tls.Server {\n setTimeout(callback: () => void): this;\n setTimeout(msecs?: number, callback?: () => void): this;\n timeout: number;\n keepAliveTimeout: number;\n }\n\n export function createServer(options: ServerOptions, requestListener?: (req: http.IncomingMessage, res: http.ServerResponse) => void): Server;\n export function request(options: RequestOptions | string | URL, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;\n export function get(options: RequestOptions | string | URL, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;\n export var globalAgent: Agent;\n}\n\ndeclare module "punycode" {\n export function decode(string: string): string;\n export function encode(string: string): string;\n export function toUnicode(domain: string): string;\n export function toASCII(domain: string): string;\n export var ucs2: ucs2;\n interface ucs2 {\n decode(string: string): number[];\n encode(codePoints: number[]): string;\n }\n export var version: any;\n}\n\ndeclare module "repl" {\n import * as stream from "stream";\n import * as readline from "readline";\n\n export interface ReplOptions {\n prompt?: string;\n input?: NodeJS.ReadableStream;\n output?: NodeJS.WritableStream;\n terminal?: boolean;\n eval?: Function;\n useColors?: boolean;\n useGlobal?: boolean;\n ignoreUndefined?: boolean;\n writer?: Function;\n completer?: Function;\n replMode?: any;\n breakEvalOnSigint?: any;\n }\n\n export interface REPLServer extends readline.ReadLine {\n context: any;\n inputStream: NodeJS.ReadableStream;\n outputStream: NodeJS.WritableStream;\n\n defineCommand(keyword: string, cmd: Function | { help: string, action: Function }): void;\n displayPrompt(preserveCursor?: boolean): void;\n\n /**\n * events.EventEmitter\n * 1. exit\n * 2. reset\n */\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "exit", listener: () => void): this;\n addListener(event: "reset", listener: (...args: any[]) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "exit"): boolean;\n emit(event: "reset", context: any): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "exit", listener: () => void): this;\n on(event: "reset", listener: (...args: any[]) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "exit", listener: () => void): this;\n once(event: "reset", listener: (...args: any[]) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "exit", listener: () => void): this;\n prependListener(event: "reset", listener: (...args: any[]) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "exit", listener: () => void): this;\n prependOnceListener(event: "reset", listener: (...args: any[]) => void): this;\n }\n\n export function start(options?: string | ReplOptions): REPLServer;\n\n export class Recoverable extends SyntaxError {\n err: Error;\n\n constructor(err: Error);\n }\n}\n\ndeclare module "readline" {\n import * as events from "events";\n import * as stream from "stream";\n\n export interface Key {\n sequence?: string;\n name?: string;\n ctrl?: boolean;\n meta?: boolean;\n shift?: boolean;\n }\n\n export interface ReadLine extends events.EventEmitter {\n setPrompt(prompt: string): void;\n prompt(preserveCursor?: boolean): void;\n question(query: string, callback: (answer: string) => void): void;\n pause(): ReadLine;\n resume(): ReadLine;\n close(): void;\n write(data: string | Buffer, key?: Key): void;\n\n /**\n * events.EventEmitter\n * 1. close\n * 2. line\n * 3. pause\n * 4. resume\n * 5. SIGCONT\n * 6. SIGINT\n * 7. SIGTSTP\n */\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "line", listener: (input: any) => void): this;\n addListener(event: "pause", listener: () => void): this;\n addListener(event: "resume", listener: () => void): this;\n addListener(event: "SIGCONT", listener: () => void): this;\n addListener(event: "SIGINT", listener: () => void): this;\n addListener(event: "SIGTSTP", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close"): boolean;\n emit(event: "line", input: any): boolean;\n emit(event: "pause"): boolean;\n emit(event: "resume"): boolean;\n emit(event: "SIGCONT"): boolean;\n emit(event: "SIGINT"): boolean;\n emit(event: "SIGTSTP"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "line", listener: (input: any) => void): this;\n on(event: "pause", listener: () => void): this;\n on(event: "resume", listener: () => void): this;\n on(event: "SIGCONT", listener: () => void): this;\n on(event: "SIGINT", listener: () => void): this;\n on(event: "SIGTSTP", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "line", listener: (input: any) => void): this;\n once(event: "pause", listener: () => void): this;\n once(event: "resume", listener: () => void): this;\n once(event: "SIGCONT", listener: () => void): this;\n once(event: "SIGINT", listener: () => void): this;\n once(event: "SIGTSTP", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "line", listener: (input: any) => void): this;\n prependListener(event: "pause", listener: () => void): this;\n prependListener(event: "resume", listener: () => void): this;\n prependListener(event: "SIGCONT", listener: () => void): this;\n prependListener(event: "SIGINT", listener: () => void): this;\n prependListener(event: "SIGTSTP", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "line", listener: (input: any) => void): this;\n prependOnceListener(event: "pause", listener: () => void): this;\n prependOnceListener(event: "resume", listener: () => void): this;\n prependOnceListener(event: "SIGCONT", listener: () => void): this;\n prependOnceListener(event: "SIGINT", listener: () => void): this;\n prependOnceListener(event: "SIGTSTP", listener: () => void): this;\n }\n\n type Completer = (line: string) => CompleterResult;\n type AsyncCompleter = (line: string, callback: (err: any, result: CompleterResult) => void) => any;\n\n export type CompleterResult = [string[], string];\n\n export interface ReadLineOptions {\n input: NodeJS.ReadableStream;\n output?: NodeJS.WritableStream;\n completer?: Completer | AsyncCompleter;\n terminal?: boolean;\n historySize?: number;\n prompt?: string;\n crlfDelay?: number;\n removeHistoryDuplicates?: boolean;\n }\n\n export function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): ReadLine;\n export function createInterface(options: ReadLineOptions): ReadLine;\n\n export function cursorTo(stream: NodeJS.WritableStream, x: number, y?: number): void;\n export function emitKeypressEvents(stream: NodeJS.ReadableStream, interface?: ReadLine): void;\n export function moveCursor(stream: NodeJS.WritableStream, dx: number | string, dy: number | string): void;\n export function clearLine(stream: NodeJS.WritableStream, dir: number): void;\n export function clearScreenDown(stream: NodeJS.WritableStream): void;\n}\n\ndeclare module "vm" {\n export interface Context { }\n export interface ScriptOptions {\n filename?: string;\n lineOffset?: number;\n columnOffset?: number;\n displayErrors?: boolean;\n timeout?: number;\n cachedData?: Buffer;\n produceCachedData?: boolean;\n }\n export interface RunningScriptOptions {\n filename?: string;\n lineOffset?: number;\n columnOffset?: number;\n displayErrors?: boolean;\n timeout?: number;\n }\n export class Script {\n constructor(code: string, options?: ScriptOptions);\n runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any;\n runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any;\n runInThisContext(options?: RunningScriptOptions): any;\n }\n export function createContext(sandbox?: Context): Context;\n export function isContext(sandbox: Context): boolean;\n export function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions | string): any;\n export function runInDebugContext(code: string): any;\n export function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions | string): any;\n export function runInThisContext(code: string, options?: RunningScriptOptions | string): any;\n}\n\ndeclare module "child_process" {\n import * as events from "events";\n import * as stream from "stream";\n import * as net from "net";\n\n export interface ChildProcess extends events.EventEmitter {\n stdin: stream.Writable;\n stdout: stream.Readable;\n stderr: stream.Readable;\n stdio: [stream.Writable, stream.Readable, stream.Readable];\n killed: boolean;\n pid: number;\n kill(signal?: string): void;\n send(message: any, callback?: (error: Error) => void): boolean;\n send(message: any, sendHandle?: net.Socket | net.Server, callback?: (error: Error) => void): boolean;\n send(message: any, sendHandle?: net.Socket | net.Server, options?: MessageOptions, callback?: (error: Error) => void): boolean;\n connected: boolean;\n disconnect(): void;\n unref(): void;\n ref(): void;\n\n /**\n * events.EventEmitter\n * 1. close\n * 2. disconnect\n * 3. error\n * 4. exit\n * 5. message\n */\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: (code: number, signal: string) => void): this;\n addListener(event: "disconnect", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "exit", listener: (code: number, signal: string) => void): this;\n addListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close", code: number, signal: string): boolean;\n emit(event: "disconnect"): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "exit", code: number, signal: string): boolean;\n emit(event: "message", message: any, sendHandle: net.Socket | net.Server): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: (code: number, signal: string) => void): this;\n on(event: "disconnect", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "exit", listener: (code: number, signal: string) => void): this;\n on(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: (code: number, signal: string) => void): this;\n once(event: "disconnect", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "exit", listener: (code: number, signal: string) => void): this;\n once(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: (code: number, signal: string) => void): this;\n prependListener(event: "disconnect", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "exit", listener: (code: number, signal: string) => void): this;\n prependListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: (code: number, signal: string) => void): this;\n prependOnceListener(event: "disconnect", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this;\n prependOnceListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;\n }\n\n export interface MessageOptions {\n keepOpen?: boolean;\n }\n\n export interface SpawnOptions {\n cwd?: string;\n env?: any;\n stdio?: any;\n detached?: boolean;\n uid?: number;\n gid?: number;\n shell?: boolean | string;\n windowsVerbatimArguments?: boolean;\n windowsHide?: boolean;\n }\n\n export function spawn(command: string, args?: ReadonlyArray, options?: SpawnOptions): ChildProcess;\n\n export interface ExecOptions {\n cwd?: string;\n env?: any;\n shell?: string;\n timeout?: number;\n maxBuffer?: number;\n killSignal?: string;\n uid?: number;\n gid?: number;\n windowsHide?: boolean;\n }\n\n export interface ExecOptionsWithStringEncoding extends ExecOptions {\n encoding: BufferEncoding;\n }\n\n export interface ExecOptionsWithBufferEncoding extends ExecOptions {\n encoding: string | null; // specify `null`.\n }\n\n // no `options` definitely means stdout/stderr are `string`.\n export function exec(command: string, callback?: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n\n // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.\n export function exec(command: string, options: { encoding: "buffer" | null } & ExecOptions, callback?: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;\n\n // `options` with well known `encoding` means stdout/stderr are definitely `string`.\n export function exec(command: string, options: { encoding: BufferEncoding } & ExecOptions, callback?: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n\n // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.\n // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.\n export function exec(command: string, options: { encoding: string } & ExecOptions, callback?: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;\n\n // `options` without an `encoding` means stdout/stderr are definitely `string`.\n export function exec(command: string, options: ExecOptions, callback?: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n\n // fallback if nothing else matches. Worst case is always `string | Buffer`.\n export function exec(command: string, options: ({ encoding?: string | null } & ExecOptions) | undefined | null, callback?: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace exec {\n export function __promisify__(command: string): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(command: string, options: { encoding: "buffer" | null } & ExecOptions): Promise<{ stdout: Buffer, stderr: Buffer }>;\n export function __promisify__(command: string, options: { encoding: BufferEncoding } & ExecOptions): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(command: string, options: ExecOptions): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(command: string, options?: ({ encoding?: string | null } & ExecOptions) | null): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>;\n }\n\n export interface ExecFileOptions {\n cwd?: string;\n env?: any;\n timeout?: number;\n maxBuffer?: number;\n killSignal?: string;\n uid?: number;\n gid?: number;\n windowsHide?: boolean;\n windowsVerbatimArguments?: boolean;\n }\n export interface ExecFileOptionsWithStringEncoding extends ExecFileOptions {\n encoding: BufferEncoding;\n }\n export interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions {\n encoding: \'buffer\' | null;\n }\n export interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions {\n encoding: string;\n }\n\n export function execFile(file: string): ChildProcess;\n export function execFile(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess;\n\n // no `options` definitely means stdout/stderr are `string`.\n export function execFile(file: string, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n\n // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.\n export function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithBufferEncoding, callback: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;\n\n // `options` with well known `encoding` means stdout/stderr are definitely `string`.\n export function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithStringEncoding, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n\n // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.\n // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.\n export function execFile(file: string, options: ExecFileOptionsWithOtherEncoding, callback: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithOtherEncoding, callback: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;\n\n // `options` without an `encoding` means stdout/stderr are definitely `string`.\n export function execFile(file: string, options: ExecFileOptions, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptions, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n\n // fallback if nothing else matches. Worst case is always `string | Buffer`.\n export function execFile(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null, callback: ((error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null, callback: ((error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null): ChildProcess;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace execFile {\n export function __promisify__(file: string): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(file: string, args: string[] | undefined | null): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(file: string, options: ExecFileOptionsWithBufferEncoding): Promise<{ stdout: Buffer, stderr: Buffer }>;\n export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithBufferEncoding): Promise<{ stdout: Buffer, stderr: Buffer }>;\n export function __promisify__(file: string, options: ExecFileOptionsWithStringEncoding): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithStringEncoding): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(file: string, options: ExecFileOptionsWithOtherEncoding): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>;\n export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithOtherEncoding): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>;\n export function __promisify__(file: string, options: ExecFileOptions): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptions): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>;\n export function __promisify__(file: string, args: string[] | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>;\n }\n\n export interface ForkOptions {\n cwd?: string;\n env?: any;\n execPath?: string;\n execArgv?: string[];\n silent?: boolean;\n stdio?: any[];\n uid?: number;\n gid?: number;\n windowsVerbatimArguments?: boolean;\n }\n export function fork(modulePath: string, args?: string[], options?: ForkOptions): ChildProcess;\n\n export interface SpawnSyncOptions {\n cwd?: string;\n input?: string | Buffer;\n stdio?: any;\n env?: any;\n uid?: number;\n gid?: number;\n timeout?: number;\n killSignal?: string;\n maxBuffer?: number;\n encoding?: string;\n shell?: boolean | string;\n windowsHide?: boolean;\n windowsVerbatimArguments?: boolean;\n }\n export interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions {\n encoding: BufferEncoding;\n }\n export interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions {\n encoding: string; // specify `null`.\n }\n export interface SpawnSyncReturns {\n pid: number;\n output: string[];\n stdout: T;\n stderr: T;\n status: number;\n signal: string;\n error: Error;\n }\n export function spawnSync(command: string): SpawnSyncReturns;\n export function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns;\n export function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns;\n export function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns;\n export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns;\n export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns;\n export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptions): SpawnSyncReturns;\n\n export interface ExecSyncOptions {\n cwd?: string;\n input?: string | Buffer;\n stdio?: any;\n env?: any;\n shell?: string;\n uid?: number;\n gid?: number;\n timeout?: number;\n killSignal?: string;\n maxBuffer?: number;\n encoding?: string;\n windowsHide?: boolean;\n }\n export interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions {\n encoding: BufferEncoding;\n }\n export interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions {\n encoding: string; // specify `null`.\n }\n export function execSync(command: string): Buffer;\n export function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string;\n export function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer;\n export function execSync(command: string, options?: ExecSyncOptions): Buffer;\n\n export interface ExecFileSyncOptions {\n cwd?: string;\n input?: string | Buffer;\n stdio?: any;\n env?: any;\n uid?: number;\n gid?: number;\n timeout?: number;\n killSignal?: string;\n maxBuffer?: number;\n encoding?: string;\n windowsHide?: boolean;\n }\n export interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions {\n encoding: BufferEncoding;\n }\n export interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions {\n encoding: string; // specify `null`.\n }\n export function execFileSync(command: string): Buffer;\n export function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string;\n export function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;\n export function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer;\n export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithStringEncoding): string;\n export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;\n export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptions): Buffer;\n}\n\ndeclare module "url" {\n import { ParsedUrlQuery } from \'querystring\';\n\n export interface UrlObjectCommon {\n auth?: string;\n hash?: string;\n host?: string;\n hostname?: string;\n href?: string;\n path?: string;\n pathname?: string;\n protocol?: string;\n search?: string;\n slashes?: boolean;\n }\n\n // Input to `url.format`\n export interface UrlObject extends UrlObjectCommon {\n port?: string | number;\n query?: string | null | { [key: string]: any };\n }\n\n // Output of `url.parse`\n export interface Url extends UrlObjectCommon {\n port?: string;\n query?: string | null | ParsedUrlQuery;\n }\n\n export interface UrlWithParsedQuery extends Url {\n query: ParsedUrlQuery;\n }\n\n export interface UrlWithStringQuery extends Url {\n query: string | null;\n }\n\n export function parse(urlStr: string): UrlWithStringQuery;\n export function parse(urlStr: string, parseQueryString: false | undefined, slashesDenoteHost?: boolean): UrlWithStringQuery;\n export function parse(urlStr: string, parseQueryString: true, slashesDenoteHost?: boolean): UrlWithParsedQuery;\n export function parse(urlStr: string, parseQueryString: boolean, slashesDenoteHost?: boolean): Url;\n\n export function format(URL: URL, options?: URLFormatOptions): string;\n export function format(urlObject: UrlObject | string): string;\n export function resolve(from: string, to: string): string;\n\n export function domainToASCII(domain: string): string;\n export function domainToUnicode(domain: string): string;\n\n export interface URLFormatOptions {\n auth?: boolean;\n fragment?: boolean;\n search?: boolean;\n unicode?: boolean;\n }\n\n export class URLSearchParams implements Iterable<[string, string]> {\n constructor(init?: URLSearchParams | string | { [key: string]: string | string[] | undefined } | Iterable<[string, string]> | Array<[string, string]>);\n append(name: string, value: string): void;\n delete(name: string): void;\n entries(): IterableIterator<[string, string]>;\n forEach(callback: (value: string, name: string) => void): void;\n get(name: string): string | null;\n getAll(name: string): string[];\n has(name: string): boolean;\n keys(): IterableIterator;\n set(name: string, value: string): void;\n sort(): void;\n toString(): string;\n values(): IterableIterator;\n [Symbol.iterator](): IterableIterator<[string, string]>;\n }\n\n export class URL {\n constructor(input: string, base?: string | URL);\n hash: string;\n host: string;\n hostname: string;\n href: string;\n readonly origin: string;\n password: string;\n pathname: string;\n port: string;\n protocol: string;\n search: string;\n readonly searchParams: URLSearchParams;\n username: string;\n toString(): string;\n toJSON(): string;\n }\n}\n\ndeclare module "dns" {\n // Supported getaddrinfo flags.\n export const ADDRCONFIG: number;\n export const V4MAPPED: number;\n\n export interface LookupOptions {\n family?: number;\n hints?: number;\n all?: boolean;\n }\n\n export interface LookupOneOptions extends LookupOptions {\n all?: false;\n }\n\n export interface LookupAllOptions extends LookupOptions {\n all: true;\n }\n\n export interface LookupAddress {\n address: string;\n family: number;\n }\n\n export function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void;\n export function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void;\n export function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException, addresses: LookupAddress[]) => void): void;\n export function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException, address: string | LookupAddress[], family: number) => void): void;\n export function lookup(hostname: string, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace lookup {\n export function __promisify__(hostname: string, options: LookupAllOptions): Promise<{ address: LookupAddress[] }>;\n export function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise<{ address: string, family: number }>;\n export function __promisify__(hostname: string, options?: LookupOptions | number): Promise<{ address: string | LookupAddress[], family?: number }>;\n }\n\n export function lookupService(address: string, port: number, callback: (err: NodeJS.ErrnoException, hostname: string, service: string) => void): void;\n\n export namespace lookupService {\n export function __promisify__(address: string, port: number): Promise<{ hostname: string, service: string }>;\n }\n\n export interface ResolveOptions {\n ttl: boolean;\n }\n\n export interface ResolveWithTtlOptions extends ResolveOptions {\n ttl: true;\n }\n\n export interface RecordWithTtl {\n address: string;\n ttl: number;\n }\n\n export interface MxRecord {\n priority: number;\n exchange: string;\n }\n\n export interface NaptrRecord {\n flags: string;\n service: string;\n regexp: string;\n replacement: string;\n order: number;\n preference: number;\n }\n\n export interface SoaRecord {\n nsname: string;\n hostmaster: string;\n serial: number;\n refresh: number;\n retry: number;\n expire: number;\n minttl: number;\n }\n\n export interface SrvRecord {\n priority: number;\n weight: number;\n port: number;\n name: string;\n }\n\n export function resolve(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void;\n export function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void;\n export function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException, addresses: SoaRecord) => void): void;\n export function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void;\n export function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void;\n export function resolve(hostname: string, rrtype: string, callback: (err: NodeJS.ErrnoException, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][]) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace resolve {\n export function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise;\n export function __promisify__(hostname: string, rrtype: "MX"): Promise;\n export function __promisify__(hostname: string, rrtype: "NAPTR"): Promise;\n export function __promisify__(hostname: string, rrtype: "SOA"): Promise;\n export function __promisify__(hostname: string, rrtype: "SRV"): Promise;\n export function __promisify__(hostname: string, rrtype: "TXT"): Promise;\n export function __promisify__(hostname: string, rrtype?: string): Promise;\n }\n\n export function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void;\n export function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace resolve4 {\n export function __promisify__(hostname: string): Promise;\n export function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise;\n export function __promisify__(hostname: string, options?: ResolveOptions): Promise;\n }\n\n export function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void;\n export function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace resolve6 {\n export function __promisify__(hostname: string): Promise;\n export function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise;\n export function __promisify__(hostname: string, options?: ResolveOptions): Promise;\n }\n\n export function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void;\n export function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void;\n export function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException, address: SoaRecord) => void): void;\n export function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void;\n export function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void;\n\n export function reverse(ip: string, callback: (err: NodeJS.ErrnoException, hostnames: string[]) => void): void;\n export function setServers(servers: string[]): void;\n\n // Error codes\n export var NODATA: string;\n export var FORMERR: string;\n export var SERVFAIL: string;\n export var NOTFOUND: string;\n export var NOTIMP: string;\n export var REFUSED: string;\n export var BADQUERY: string;\n export var BADNAME: string;\n export var BADFAMILY: string;\n export var BADRESP: string;\n export var CONNREFUSED: string;\n export var TIMEOUT: string;\n export var EOF: string;\n export var FILE: string;\n export var NOMEM: string;\n export var DESTRUCTION: string;\n export var BADSTR: string;\n export var BADFLAGS: string;\n export var NONAME: string;\n export var BADHINTS: string;\n export var NOTINITIALIZED: string;\n export var LOADIPHLPAPI: string;\n export var ADDRGETNETWORKPARAMS: string;\n export var CANCELLED: string;\n}\n\ndeclare module "net" {\n import * as stream from "stream";\n import * as events from "events";\n import * as dns from "dns";\n\n type LookupFunction = (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void;\n\n export interface SocketConstructorOpts {\n fd?: number;\n allowHalfOpen?: boolean;\n readable?: boolean;\n writable?: boolean;\n }\n\n export interface TcpSocketConnectOpts {\n port: number;\n host?: string;\n localAddress?: string;\n localPort?: number;\n hints?: number;\n family?: number;\n lookup?: LookupFunction;\n }\n\n export interface IpcSocketConnectOpts {\n path: string;\n }\n\n export type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts;\n\n export class Socket extends stream.Duplex {\n constructor(options?: SocketConstructorOpts);\n\n // Extended base methods\n write(buffer: Buffer): boolean;\n write(buffer: Buffer, cb?: Function): boolean;\n write(str: string, cb?: Function): boolean;\n write(str: string, encoding?: string, cb?: Function): boolean;\n write(str: string, encoding?: string, fd?: string): boolean;\n write(data: any, encoding?: string, callback?: Function): void;\n\n connect(options: SocketConnectOpts, connectionListener?: Function): this;\n connect(port: number, host: string, connectionListener?: Function): this;\n connect(port: number, connectionListener?: Function): this;\n connect(path: string, connectionListener?: Function): this;\n\n bufferSize: number;\n setEncoding(encoding?: string): this;\n destroy(err?: any): void;\n pause(): this;\n resume(): this;\n setTimeout(timeout: number, callback?: Function): this;\n setNoDelay(noDelay?: boolean): this;\n setKeepAlive(enable?: boolean, initialDelay?: number): this;\n address(): { port: number; family: string; address: string; };\n unref(): void;\n ref(): void;\n\n remoteAddress?: string;\n remoteFamily?: string;\n remotePort?: number;\n localAddress: string;\n localPort: number;\n bytesRead: number;\n bytesWritten: number;\n connecting: boolean;\n destroyed: boolean;\n\n // Extended base methods\n end(): void;\n end(buffer: Buffer, cb?: Function): void;\n end(str: string, cb?: Function): void;\n end(str: string, encoding?: string, cb?: Function): void;\n end(data?: any, encoding?: string): void;\n\n /**\n * events.EventEmitter\n * 1. close\n * 2. connect\n * 3. data\n * 4. drain\n * 5. end\n * 6. error\n * 7. lookup\n * 8. timeout\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: (had_error: boolean) => void): this;\n addListener(event: "connect", listener: () => void): this;\n addListener(event: "data", listener: (data: Buffer) => void): this;\n addListener(event: "drain", listener: () => void): this;\n addListener(event: "end", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;\n addListener(event: "timeout", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close", had_error: boolean): boolean;\n emit(event: "connect"): boolean;\n emit(event: "data", data: Buffer): boolean;\n emit(event: "drain"): boolean;\n emit(event: "end"): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean;\n emit(event: "timeout"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: (had_error: boolean) => void): this;\n on(event: "connect", listener: () => void): this;\n on(event: "data", listener: (data: Buffer) => void): this;\n on(event: "drain", listener: () => void): this;\n on(event: "end", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;\n on(event: "timeout", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: (had_error: boolean) => void): this;\n once(event: "connect", listener: () => void): this;\n once(event: "data", listener: (data: Buffer) => void): this;\n once(event: "drain", listener: () => void): this;\n once(event: "end", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;\n once(event: "timeout", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: (had_error: boolean) => void): this;\n prependListener(event: "connect", listener: () => void): this;\n prependListener(event: "data", listener: (data: Buffer) => void): this;\n prependListener(event: "drain", listener: () => void): this;\n prependListener(event: "end", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;\n prependListener(event: "timeout", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: (had_error: boolean) => void): this;\n prependOnceListener(event: "connect", listener: () => void): this;\n prependOnceListener(event: "data", listener: (data: Buffer) => void): this;\n prependOnceListener(event: "drain", listener: () => void): this;\n prependOnceListener(event: "end", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;\n prependOnceListener(event: "timeout", listener: () => void): this;\n }\n\n export interface ListenOptions {\n port?: number;\n host?: string;\n backlog?: number;\n path?: string;\n exclusive?: boolean;\n }\n\n // https://github.com/nodejs/node/blob/master/lib/net.js\n export class Server extends events.EventEmitter {\n constructor(connectionListener?: (socket: Socket) => void);\n constructor(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void);\n\n listen(port?: number, hostname?: string, backlog?: number, listeningListener?: Function): this;\n listen(port?: number, hostname?: string, listeningListener?: Function): this;\n listen(port?: number, backlog?: number, listeningListener?: Function): this;\n listen(port?: number, listeningListener?: Function): this;\n listen(path: string, backlog?: number, listeningListener?: Function): this;\n listen(path: string, listeningListener?: Function): this;\n listen(options: ListenOptions, listeningListener?: Function): this;\n listen(handle: any, backlog?: number, listeningListener?: Function): this;\n listen(handle: any, listeningListener?: Function): this;\n close(callback?: Function): this;\n address(): { port: number; family: string; address: string; };\n getConnections(cb: (error: Error | null, count: number) => void): void;\n ref(): this;\n unref(): this;\n maxConnections: number;\n connections: number;\n listening: boolean;\n\n /**\n * events.EventEmitter\n * 1. close\n * 2. connection\n * 3. error\n * 4. listening\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "connection", listener: (socket: Socket) => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "listening", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close"): boolean;\n emit(event: "connection", socket: Socket): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "listening"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "connection", listener: (socket: Socket) => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "listening", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "connection", listener: (socket: Socket) => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "listening", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "connection", listener: (socket: Socket) => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "listening", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "connection", listener: (socket: Socket) => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "listening", listener: () => void): this;\n }\n\n export interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts {\n timeout?: number;\n }\n\n export interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts {\n timeout?: number;\n }\n\n export type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts;\n\n export function createServer(connectionListener?: (socket: Socket) => void): Server;\n export function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server;\n export function connect(options: NetConnectOpts, connectionListener?: Function): Socket;\n export function connect(port: number, host?: string, connectionListener?: Function): Socket;\n export function connect(path: string, connectionListener?: Function): Socket;\n export function createConnection(options: NetConnectOpts, connectionListener?: Function): Socket;\n export function createConnection(port: number, host?: string, connectionListener?: Function): Socket;\n export function createConnection(path: string, connectionListener?: Function): Socket;\n export function isIP(input: string): number;\n export function isIPv4(input: string): boolean;\n export function isIPv6(input: string): boolean;\n}\n\ndeclare module "dgram" {\n import * as events from "events";\n import * as dns from "dns";\n\n interface RemoteInfo {\n address: string;\n family: string;\n port: number;\n }\n\n interface AddressInfo {\n address: string;\n family: string;\n port: number;\n }\n\n interface BindOptions {\n port: number;\n address?: string;\n exclusive?: boolean;\n }\n\n type SocketType = "udp4" | "udp6";\n\n interface SocketOptions {\n type: SocketType;\n reuseAddr?: boolean;\n recvBufferSize?: number;\n sendBufferSize?: number;\n lookup?: (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void) => void;\n }\n\n export function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;\n export function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;\n\n export class Socket extends events.EventEmitter {\n send(msg: Buffer | string | Uint8Array | any[], port: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;\n send(msg: Buffer | string | Uint8Array, offset: number, length: number, port: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;\n bind(port?: number, address?: string, callback?: () => void): void;\n bind(port?: number, callback?: () => void): void;\n bind(callback?: () => void): void;\n bind(options: BindOptions, callback?: Function): void;\n close(callback?: () => void): void;\n address(): AddressInfo;\n setBroadcast(flag: boolean): void;\n setTTL(ttl: number): void;\n setMulticastTTL(ttl: number): void;\n setMulticastInterface(multicastInterface: string): void;\n setMulticastLoopback(flag: boolean): void;\n addMembership(multicastAddress: string, multicastInterface?: string): void;\n dropMembership(multicastAddress: string, multicastInterface?: string): void;\n ref(): this;\n unref(): this;\n setRecvBufferSize(size: number): void;\n setSendBufferSize(size: number): void;\n getRecvBufferSize(): number;\n getSendBufferSize(): number;\n\n /**\n * events.EventEmitter\n * 1. close\n * 2. error\n * 3. listening\n * 4. message\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "listening", listener: () => void): this;\n addListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close"): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "listening"): boolean;\n emit(event: "message", msg: Buffer, rinfo: AddressInfo): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "listening", listener: () => void): this;\n on(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "listening", listener: () => void): this;\n once(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "listening", listener: () => void): this;\n prependListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "listening", listener: () => void): this;\n prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this;\n }\n}\n\ndeclare module "fs" {\n import * as stream from "stream";\n import * as events from "events";\n import { URL } from "url";\n\n /**\n * Valid types for path values in "fs".\n */\n export type PathLike = string | Buffer | URL;\n\n export class Stats {\n isFile(): boolean;\n isDirectory(): boolean;\n isBlockDevice(): boolean;\n isCharacterDevice(): boolean;\n isSymbolicLink(): boolean;\n isFIFO(): boolean;\n isSocket(): boolean;\n dev: number;\n ino: number;\n mode: number;\n nlink: number;\n uid: number;\n gid: number;\n rdev: number;\n size: number;\n blksize: number;\n blocks: number;\n atimeMs: number;\n mtimeMs: number;\n ctimeMs: number;\n birthtimeMs: number;\n atime: Date;\n mtime: Date;\n ctime: Date;\n birthtime: Date;\n }\n\n export interface FSWatcher extends events.EventEmitter {\n close(): void;\n\n /**\n * events.EventEmitter\n * 1. change\n * 2. error\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;\n addListener(event: "error", listener: (error: Error) => void): this;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;\n on(event: "error", listener: (error: Error) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;\n once(event: "error", listener: (error: Error) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;\n prependListener(event: "error", listener: (error: Error) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;\n prependOnceListener(event: "error", listener: (error: Error) => void): this;\n }\n\n export class ReadStream extends stream.Readable {\n close(): void;\n destroy(): void;\n bytesRead: number;\n path: string | Buffer;\n\n /**\n * events.EventEmitter\n * 1. open\n * 2. close\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "open", listener: (fd: number) => void): this;\n addListener(event: "close", listener: () => void): this;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "open", listener: (fd: number) => void): this;\n on(event: "close", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "open", listener: (fd: number) => void): this;\n once(event: "close", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "open", listener: (fd: number) => void): this;\n prependListener(event: "close", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "open", listener: (fd: number) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n }\n\n export class WriteStream extends stream.Writable {\n close(): void;\n bytesWritten: number;\n path: string | Buffer;\n\n /**\n * events.EventEmitter\n * 1. open\n * 2. close\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "open", listener: (fd: number) => void): this;\n addListener(event: "close", listener: () => void): this;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "open", listener: (fd: number) => void): this;\n on(event: "close", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "open", listener: (fd: number) => void): this;\n once(event: "close", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "open", listener: (fd: number) => void): this;\n prependListener(event: "close", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "open", listener: (fd: number) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n }\n\n /**\n * Asynchronous rename(2) - Change the name or location of a file or directory.\n * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function rename(oldPath: PathLike, newPath: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace rename {\n /**\n * Asynchronous rename(2) - Change the name or location of a file or directory.\n * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function __promisify__(oldPath: PathLike, newPath: PathLike): Promise;\n }\n\n /**\n * Synchronous rename(2) - Change the name or location of a file or directory.\n * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function renameSync(oldPath: PathLike, newPath: PathLike): void;\n\n /**\n * Asynchronous truncate(2) - Truncate a file to a specified length.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param len If not specified, defaults to `0`.\n */\n export function truncate(path: PathLike, len: number | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronous truncate(2) - Truncate a file to a specified length.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function truncate(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace truncate {\n /**\n * Asynchronous truncate(2) - Truncate a file to a specified length.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param len If not specified, defaults to `0`.\n */\n export function __promisify__(path: PathLike, len?: number | null): Promise;\n }\n\n /**\n * Synchronous truncate(2) - Truncate a file to a specified length.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param len If not specified, defaults to `0`.\n */\n export function truncateSync(path: PathLike, len?: number | null): void;\n\n /**\n * Asynchronous ftruncate(2) - Truncate a file to a specified length.\n * @param fd A file descriptor.\n * @param len If not specified, defaults to `0`.\n */\n export function ftruncate(fd: number, len: number | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronous ftruncate(2) - Truncate a file to a specified length.\n * @param fd A file descriptor.\n */\n export function ftruncate(fd: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace ftruncate {\n /**\n * Asynchronous ftruncate(2) - Truncate a file to a specified length.\n * @param fd A file descriptor.\n * @param len If not specified, defaults to `0`.\n */\n export function __promisify__(fd: number, len?: number | null): Promise;\n }\n\n /**\n * Synchronous ftruncate(2) - Truncate a file to a specified length.\n * @param fd A file descriptor.\n * @param len If not specified, defaults to `0`.\n */\n export function ftruncateSync(fd: number, len?: number | null): void;\n\n /**\n * Asynchronous chown(2) - Change ownership of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function chown(path: PathLike, uid: number, gid: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace chown {\n /**\n * Asynchronous chown(2) - Change ownership of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function __promisify__(path: PathLike, uid: number, gid: number): Promise;\n }\n\n /**\n * Synchronous chown(2) - Change ownership of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function chownSync(path: PathLike, uid: number, gid: number): void;\n\n /**\n * Asynchronous fchown(2) - Change ownership of a file.\n * @param fd A file descriptor.\n */\n export function fchown(fd: number, uid: number, gid: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace fchown {\n /**\n * Asynchronous fchown(2) - Change ownership of a file.\n * @param fd A file descriptor.\n */\n export function __promisify__(fd: number, uid: number, gid: number): Promise;\n }\n\n /**\n * Synchronous fchown(2) - Change ownership of a file.\n * @param fd A file descriptor.\n */\n export function fchownSync(fd: number, uid: number, gid: number): void;\n\n /**\n * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function lchown(path: PathLike, uid: number, gid: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace lchown {\n /**\n * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function __promisify__(path: PathLike, uid: number, gid: number): Promise;\n }\n\n /**\n * Synchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function lchownSync(path: PathLike, uid: number, gid: number): void;\n\n /**\n * Asynchronous chmod(2) - Change permissions of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function chmod(path: PathLike, mode: string | number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace chmod {\n /**\n * Asynchronous chmod(2) - Change permissions of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function __promisify__(path: PathLike, mode: string | number): Promise;\n }\n\n /**\n * Synchronous chmod(2) - Change permissions of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function chmodSync(path: PathLike, mode: string | number): void;\n\n /**\n * Asynchronous fchmod(2) - Change permissions of a file.\n * @param fd A file descriptor.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function fchmod(fd: number, mode: string | number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace fchmod {\n /**\n * Asynchronous fchmod(2) - Change permissions of a file.\n * @param fd A file descriptor.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function __promisify__(fd: number, mode: string | number): Promise;\n }\n\n /**\n * Synchronous fchmod(2) - Change permissions of a file.\n * @param fd A file descriptor.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function fchmodSync(fd: number, mode: string | number): void;\n\n /**\n * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function lchmod(path: PathLike, mode: string | number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace lchmod {\n /**\n * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function __promisify__(path: PathLike, mode: string | number): Promise;\n }\n\n /**\n * Synchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function lchmodSync(path: PathLike, mode: string | number): void;\n\n /**\n * Asynchronous stat(2) - Get file status.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function stat(path: PathLike, callback: (err: NodeJS.ErrnoException, stats: Stats) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace stat {\n /**\n * Asynchronous stat(2) - Get file status.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function __promisify__(path: PathLike): Promise;\n }\n\n /**\n * Synchronous stat(2) - Get file status.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function statSync(path: PathLike): Stats;\n\n /**\n * Asynchronous fstat(2) - Get file status.\n * @param fd A file descriptor.\n */\n export function fstat(fd: number, callback: (err: NodeJS.ErrnoException, stats: Stats) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace fstat {\n /**\n * Asynchronous fstat(2) - Get file status.\n * @param fd A file descriptor.\n */\n export function __promisify__(fd: number): Promise;\n }\n\n /**\n * Synchronous fstat(2) - Get file status.\n * @param fd A file descriptor.\n */\n export function fstatSync(fd: number): Stats;\n\n /**\n * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException, stats: Stats) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace lstat {\n /**\n * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function __promisify__(path: PathLike): Promise;\n }\n\n /**\n * Synchronous lstat(2) - Get file status. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function lstatSync(path: PathLike): Stats;\n\n /**\n * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.\n * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function link(existingPath: PathLike, newPath: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace link {\n /**\n * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.\n * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function link(existingPath: PathLike, newPath: PathLike): Promise;\n }\n\n /**\n * Synchronous link(2) - Create a new link (also known as a hard link) to an existing file.\n * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function linkSync(existingPath: PathLike, newPath: PathLike): void;\n\n /**\n * Asynchronous symlink(2) - Create a new symbolic link to an existing file.\n * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.\n * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.\n * @param type May be set to `\'dir\'`, `\'file\'`, or `\'junction\'` (default is `\'file\'`) and is only available on Windows (ignored on other platforms).\n * When using `\'junction\'`, the `target` argument will automatically be normalized to an absolute path.\n */\n export function symlink(target: PathLike, path: PathLike, type: symlink.Type | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronous symlink(2) - Create a new symbolic link to an existing file.\n * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.\n * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.\n */\n export function symlink(target: PathLike, path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace symlink {\n /**\n * Asynchronous symlink(2) - Create a new symbolic link to an existing file.\n * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.\n * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.\n * @param type May be set to `\'dir\'`, `\'file\'`, or `\'junction\'` (default is `\'file\'`) and is only available on Windows (ignored on other platforms).\n * When using `\'junction\'`, the `target` argument will automatically be normalized to an absolute path.\n */\n export function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise;\n\n export type Type = "dir" | "file" | "junction";\n }\n\n /**\n * Synchronous symlink(2) - Create a new symbolic link to an existing file.\n * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.\n * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.\n * @param type May be set to `\'dir\'`, `\'file\'`, or `\'junction\'` (default is `\'file\'`) and is only available on Windows (ignored on other platforms).\n * When using `\'junction\'`, the `target` argument will automatically be normalized to an absolute path.\n */\n export function symlinkSync(target: PathLike, path: PathLike, type?: symlink.Type | null): void;\n\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readlink(path: PathLike, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, linkString: string) => void): void;\n\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readlink(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, linkString: Buffer) => void): void;\n\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readlink(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, linkString: string | Buffer) => void): void;\n\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function readlink(path: PathLike, callback: (err: NodeJS.ErrnoException, linkString: string) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace readlink {\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise;\n\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise;\n\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise;\n }\n\n /**\n * Synchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readlinkSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;\n\n /**\n * Synchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readlinkSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;\n\n /**\n * Synchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readlinkSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;\n\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function realpath(path: PathLike, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => void): void;\n\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function realpath(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, resolvedPath: Buffer) => void): void;\n\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function realpath(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, resolvedPath: string | Buffer) => void): void;\n\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function realpath(path: PathLike, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace realpath {\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise;\n\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise;\n\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise;\n }\n\n /**\n * Synchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function realpathSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;\n\n /**\n * Synchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function realpathSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;\n\n /**\n * Synchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function realpathSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;\n\n /**\n * Asynchronous unlink(2) - delete a name and possibly the file it refers to.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function unlink(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace unlink {\n /**\n * Asynchronous unlink(2) - delete a name and possibly the file it refers to.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function __promisify__(path: PathLike): Promise;\n }\n\n /**\n * Synchronous unlink(2) - delete a name and possibly the file it refers to.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function unlinkSync(path: PathLike): void;\n\n /**\n * Asynchronous rmdir(2) - delete a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function rmdir(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace rmdir {\n /**\n * Asynchronous rmdir(2) - delete a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function __promisify__(path: PathLike): Promise;\n }\n\n /**\n * Synchronous rmdir(2) - delete a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function rmdirSync(path: PathLike): void;\n\n /**\n * Asynchronous mkdir(2) - create a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.\n */\n export function mkdir(path: PathLike, mode: number | string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronous mkdir(2) - create a directory with a mode of `0o777`.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function mkdir(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace mkdir {\n /**\n * Asynchronous mkdir(2) - create a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.\n */\n export function __promisify__(path: PathLike, mode?: number | string | null): Promise;\n }\n\n /**\n * Synchronous mkdir(2) - create a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.\n */\n export function mkdirSync(path: PathLike, mode?: number | string | null): void;\n\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function mkdtemp(prefix: string, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, folder: string) => void): void;\n\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function mkdtemp(prefix: string, options: "buffer" | { encoding: "buffer" }, callback: (err: NodeJS.ErrnoException, folder: Buffer) => void): void;\n\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function mkdtemp(prefix: string, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, folder: string | Buffer) => void): void;\n\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n */\n export function mkdtemp(prefix: string, callback: (err: NodeJS.ErrnoException, folder: string) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace mkdtemp {\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise;\n\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(prefix: string, options: { encoding: "buffer" } | "buffer"): Promise;\n\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(prefix: string, options?: { encoding?: string | null } | string | null): Promise;\n }\n\n /**\n * Synchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function mkdtempSync(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;\n\n /**\n * Synchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function mkdtempSync(prefix: string, options: { encoding: "buffer" } | "buffer"): Buffer;\n\n /**\n * Synchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function mkdtempSync(prefix: string, options?: { encoding?: string | null } | string | null): string | Buffer;\n\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readdir(path: PathLike, options: { encoding: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void;\n\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readdir(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, files: Buffer[]) => void): void;\n\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readdir(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, files: string[] | Buffer[]) => void): void;\n\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function readdir(path: PathLike, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace readdir {\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options?: { encoding: BufferEncoding | null } | BufferEncoding | null): Promise;\n\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options: "buffer" | { encoding: "buffer" }): Promise;\n\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise;\n }\n\n /**\n * Synchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readdirSync(path: PathLike, options?: { encoding: BufferEncoding | null } | BufferEncoding | null): string[];\n\n /**\n * Synchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readdirSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer[];\n\n /**\n * Synchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readdirSync(path: PathLike, options?: { encoding?: string | null } | string | null): string[] | Buffer[];\n\n /**\n * Asynchronous close(2) - close a file descriptor.\n * @param fd A file descriptor.\n */\n export function close(fd: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace close {\n /**\n * Asynchronous close(2) - close a file descriptor.\n * @param fd A file descriptor.\n */\n export function __promisify__(fd: number): Promise;\n }\n\n /**\n * Synchronous close(2) - close a file descriptor.\n * @param fd A file descriptor.\n */\n export function closeSync(fd: number): void;\n\n /**\n * Asynchronous open(2) - open and possibly create a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.\n */\n export function open(path: PathLike, flags: string | number, mode: string | number | undefined | null, callback: (err: NodeJS.ErrnoException, fd: number) => void): void;\n\n /**\n * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function open(path: PathLike, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace open {\n /**\n * Asynchronous open(2) - open and possibly create a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.\n */\n export function __promisify__(path: PathLike, flags: string | number, mode?: string | number | null): Promise;\n }\n\n /**\n * Synchronous open(2) - open and possibly create a file, returning a file descriptor..\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.\n */\n export function openSync(path: PathLike, flags: string | number, mode?: string | number | null): number;\n\n /**\n * Asynchronously change file timestamps of the file referenced by the supplied path.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param atime The last access time. If a string is provided, it will be coerced to number.\n * @param mtime The last modified time. If a string is provided, it will be coerced to number.\n */\n export function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace utimes {\n /**\n * Asynchronously change file timestamps of the file referenced by the supplied path.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param atime The last access time. If a string is provided, it will be coerced to number.\n * @param mtime The last modified time. If a string is provided, it will be coerced to number.\n */\n export function __promisify__(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise;\n }\n\n /**\n * Synchronously change file timestamps of the file referenced by the supplied path.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param atime The last access time. If a string is provided, it will be coerced to number.\n * @param mtime The last modified time. If a string is provided, it will be coerced to number.\n */\n export function utimesSync(path: PathLike, atime: string | number | Date, mtime: string | number | Date): void;\n\n /**\n * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param atime The last access time. If a string is provided, it will be coerced to number.\n * @param mtime The last modified time. If a string is provided, it will be coerced to number.\n */\n export function futimes(fd: number, atime: string | number | Date, mtime: string | number | Date, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace futimes {\n /**\n * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param atime The last access time. If a string is provided, it will be coerced to number.\n * @param mtime The last modified time. If a string is provided, it will be coerced to number.\n */\n export function __promisify__(fd: number, atime: string | number | Date, mtime: string | number | Date): Promise;\n }\n\n /**\n * Synchronously change file timestamps of the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param atime The last access time. If a string is provided, it will be coerced to number.\n * @param mtime The last modified time. If a string is provided, it will be coerced to number.\n */\n export function futimesSync(fd: number, atime: string | number | Date, mtime: string | number | Date): void;\n\n /**\n * Asynchronous fsync(2) - synchronize a file\'s in-core state with the underlying storage device.\n * @param fd A file descriptor.\n */\n export function fsync(fd: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace fsync {\n /**\n * Asynchronous fsync(2) - synchronize a file\'s in-core state with the underlying storage device.\n * @param fd A file descriptor.\n */\n export function __promisify__(fd: number): Promise;\n }\n\n /**\n * Synchronous fsync(2) - synchronize a file\'s in-core state with the underlying storage device.\n * @param fd A file descriptor.\n */\n export function fsyncSync(fd: number): void;\n\n /**\n * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.\n * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n */\n export function write(fd: number, buffer: TBuffer, offset: number | undefined | null, length: number | undefined | null, position: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void;\n\n /**\n * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.\n * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.\n */\n export function write(fd: number, buffer: TBuffer, offset: number | undefined | null, length: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void;\n\n /**\n * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.\n */\n export function write(fd: number, buffer: TBuffer, offset: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void;\n\n /**\n * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n */\n export function write(fd: number, buffer: TBuffer, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void;\n\n /**\n * Asynchronously writes `string` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param string A string to write. If something other than a string is supplied it will be coerced to a string.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n * @param encoding The expected string encoding.\n */\n export function write(fd: number, string: any, position: number | undefined | null, encoding: string | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, str: string) => void): void;\n\n /**\n * Asynchronously writes `string` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param string A string to write. If something other than a string is supplied it will be coerced to a string.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n */\n export function write(fd: number, string: any, position: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, str: string) => void): void;\n\n /**\n * Asynchronously writes `string` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param string A string to write. If something other than a string is supplied it will be coerced to a string.\n */\n export function write(fd: number, string: any, callback: (err: NodeJS.ErrnoException, written: number, str: string) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace write {\n /**\n * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.\n * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n */\n export function __promisify__(fd: number, buffer?: TBuffer, offset?: number, length?: number, position?: number | null): Promise<{ bytesWritten: number, buffer: TBuffer }>;\n\n /**\n * Asynchronously writes `string` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param string A string to write. If something other than a string is supplied it will be coerced to a string.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n * @param encoding The expected string encoding.\n */\n export function __promisify__(fd: number, string: any, position?: number | null, encoding?: string | null): Promise<{ bytesWritten: number, buffer: string }>;\n }\n\n /**\n * Synchronously writes `buffer` to the file referenced by the supplied file descriptor, returning the number of bytes written.\n * @param fd A file descriptor.\n * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.\n * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n */\n export function writeSync(fd: number, buffer: Buffer | Uint8Array, offset?: number | null, length?: number | null, position?: number | null): number;\n\n /**\n * Synchronously writes `string` to the file referenced by the supplied file descriptor, returning the number of bytes written.\n * @param fd A file descriptor.\n * @param string A string to write. If something other than a string is supplied it will be coerced to a string.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n * @param encoding The expected string encoding.\n */\n export function writeSync(fd: number, string: any, position?: number | null, encoding?: string | null): number;\n\n /**\n * Asynchronously reads data from the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param buffer The buffer that the data will be written to.\n * @param offset The offset in the buffer at which to start writing.\n * @param length The number of bytes to read.\n * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.\n */\n export function read(fd: number, buffer: TBuffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, bytesRead: number, buffer: TBuffer) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace read {\n /**\n * @param fd A file descriptor.\n * @param buffer The buffer that the data will be written to.\n * @param offset The offset in the buffer at which to start writing.\n * @param length The number of bytes to read.\n * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.\n */\n export function __promisify__(fd: number, buffer: TBuffer, offset: number, length: number, position: number | null): Promise<{ bytesRead: number, buffer: TBuffer }>;\n }\n\n /**\n * Synchronously reads data from the file referenced by the supplied file descriptor, returning the number of bytes read.\n * @param fd A file descriptor.\n * @param buffer The buffer that the data will be written to.\n * @param offset The offset in the buffer at which to start writing.\n * @param length The number of bytes to read.\n * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.\n */\n export function readSync(fd: number, buffer: Buffer | Uint8Array, offset: number, length: number, position: number | null): number;\n\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options An object that may contain an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function readFile(path: PathLike | number, options: { encoding?: null; flag?: string; } | undefined | null, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void;\n\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function readFile(path: PathLike | number, options: { encoding: string; flag?: string; } | string, callback: (err: NodeJS.ErrnoException, data: string) => void): void;\n\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function readFile(path: PathLike | number, options: { encoding?: string | null; flag?: string; } | string | undefined | null, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void;\n\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n */\n export function readFile(path: PathLike | number, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace readFile {\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options An object that may contain an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function __promisify__(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Promise;\n\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function __promisify__(path: PathLike | number, options: { encoding: string; flag?: string; } | string): Promise;\n\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function __promisify__(path: PathLike | number, options?: { encoding?: string | null; flag?: string; } | string | null): Promise;\n }\n\n /**\n * Synchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options An object that may contain an optional flag. If a flag is not provided, it defaults to `\'r\'`.\n */\n export function readFileSync(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Buffer;\n\n /**\n * Synchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function readFileSync(path: PathLike | number, options: { encoding: string; flag?: string; } | string): string;\n\n /**\n * Synchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function readFileSync(path: PathLike | number, options?: { encoding?: string | null; flag?: string; } | string | null): string | Buffer;\n\n /**\n * Asynchronously writes data to a file, replacing the file if it already exists.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `mode` is not supplied, the default of `0o666` is used.\n * If `mode` is a string, it is parsed as an octal integer.\n * If `flag` is not supplied, the default of `\'w\'` is used.\n */\n export function writeFile(path: PathLike | number, data: any, options: { encoding?: string | null; mode?: number | string; flag?: string; } | string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronously writes data to a file, replacing the file if it already exists.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n */\n export function writeFile(path: PathLike | number, data: any, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace writeFile {\n /**\n * Asynchronously writes data to a file, replacing the file if it already exists.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `mode` is not supplied, the default of `0o666` is used.\n * If `mode` is a string, it is parsed as an octal integer.\n * If `flag` is not supplied, the default of `\'w\'` is used.\n */\n export function __promisify__(path: PathLike | number, data: any, options?: { encoding?: string | null; mode?: number | string; flag?: string; } | string | null): Promise;\n }\n\n /**\n * Synchronously writes data to a file, replacing the file if it already exists.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `mode` is not supplied, the default of `0o666` is used.\n * If `mode` is a string, it is parsed as an octal integer.\n * If `flag` is not supplied, the default of `\'w\'` is used.\n */\n export function writeFileSync(path: PathLike | number, data: any, options?: { encoding?: string | null; mode?: number | string; flag?: string; } | string | null): void;\n\n /**\n * Asynchronously append data to a file, creating the file if it does not exist.\n * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `mode` is not supplied, the default of `0o666` is used.\n * If `mode` is a string, it is parsed as an octal integer.\n * If `flag` is not supplied, the default of `\'a\'` is used.\n */\n export function appendFile(file: PathLike | number, data: any, options: { encoding?: string | null, mode?: string | number, flag?: string } | string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronously append data to a file, creating the file if it does not exist.\n * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n */\n export function appendFile(file: PathLike | number, data: any, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace appendFile {\n /**\n * Asynchronously append data to a file, creating the file if it does not exist.\n * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `mode` is not supplied, the default of `0o666` is used.\n * If `mode` is a string, it is parsed as an octal integer.\n * If `flag` is not supplied, the default of `\'a\'` is used.\n */\n export function __promisify__(file: PathLike | number, data: any, options?: { encoding?: string | null, mode?: string | number, flag?: string } | string | null): Promise;\n }\n\n /**\n * Synchronously append data to a file, creating the file if it does not exist.\n * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `mode` is not supplied, the default of `0o666` is used.\n * If `mode` is a string, it is parsed as an octal integer.\n * If `flag` is not supplied, the default of `\'a\'` is used.\n */\n export function appendFileSync(file: PathLike | number, data: any, options?: { encoding?: string | null; mode?: number | string; flag?: string; } | string | null): void;\n\n /**\n * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed.\n */\n export function watchFile(filename: PathLike, options: { persistent?: boolean; interval?: number; } | undefined, listener: (curr: Stats, prev: Stats) => void): void;\n\n /**\n * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed.\n * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function watchFile(filename: PathLike, listener: (curr: Stats, prev: Stats) => void): void;\n\n /**\n * Stop watching for changes on `filename`.\n * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function unwatchFile(filename: PathLike, listener?: (curr: Stats, prev: Stats) => void): void;\n\n /**\n * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.\n * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `persistent` is not supplied, the default of `true` is used.\n * If `recursive` is not supplied, the default of `false` is used.\n */\n export function watch(filename: PathLike, options: { encoding?: BufferEncoding | null, persistent?: boolean, recursive?: boolean } | BufferEncoding | undefined | null, listener?: (event: string, filename: string) => void): FSWatcher;\n\n /**\n * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.\n * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `persistent` is not supplied, the default of `true` is used.\n * If `recursive` is not supplied, the default of `false` is used.\n */\n export function watch(filename: PathLike, options: { encoding: "buffer", persistent?: boolean, recursive?: boolean } | "buffer", listener?: (event: string, filename: Buffer) => void): FSWatcher;\n\n /**\n * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.\n * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `persistent` is not supplied, the default of `true` is used.\n * If `recursive` is not supplied, the default of `false` is used.\n */\n export function watch(filename: PathLike, options: { encoding?: string | null, persistent?: boolean, recursive?: boolean } | string | null, listener?: (event: string, filename: string | Buffer) => void): FSWatcher;\n\n /**\n * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.\n * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function watch(filename: PathLike, listener?: (event: string, filename: string) => any): FSWatcher;\n\n /**\n * Asynchronously tests whether or not the given path exists by checking with the file system.\n * @deprecated\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function exists(path: PathLike, callback: (exists: boolean) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace exists {\n /**\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n function __promisify__(path: PathLike): Promise;\n }\n\n /**\n * Synchronously tests whether or not the given path exists by checking with the file system.\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function existsSync(path: PathLike): boolean;\n\n export namespace constants {\n // File Access Constants\n\n /** Constant for fs.access(). File is visible to the calling process. */\n export const F_OK: number;\n\n /** Constant for fs.access(). File can be read by the calling process. */\n export const R_OK: number;\n\n /** Constant for fs.access(). File can be written by the calling process. */\n export const W_OK: number;\n\n /** Constant for fs.access(). File can be executed by the calling process. */\n export const X_OK: number;\n\n // File Open Constants\n\n /** Constant for fs.open(). Flag indicating to open a file for read-only access. */\n export const O_RDONLY: number;\n\n /** Constant for fs.open(). Flag indicating to open a file for write-only access. */\n export const O_WRONLY: number;\n\n /** Constant for fs.open(). Flag indicating to open a file for read-write access. */\n export const O_RDWR: number;\n\n /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */\n export const O_CREAT: number;\n\n /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */\n export const O_EXCL: number;\n\n /** Constant for fs.open(). Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one). */\n export const O_NOCTTY: number;\n\n /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */\n export const O_TRUNC: number;\n\n /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */\n export const O_APPEND: number;\n\n /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */\n export const O_DIRECTORY: number;\n\n /** Constant for fs.open(). Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only. */\n export const O_NOATIME: number;\n\n /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */\n export const O_NOFOLLOW: number;\n\n /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */\n export const O_SYNC: number;\n\n /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O with write operations waiting for data integrity. */\n export const O_DSYNC: number;\n\n /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */\n export const O_SYMLINK: number;\n\n /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */\n export const O_DIRECT: number;\n\n /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */\n export const O_NONBLOCK: number;\n\n // File Type Constants\n\n /** Constant for fs.Stats mode property for determining a file\'s type. Bit mask used to extract the file type code. */\n export const S_IFMT: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a regular file. */\n export const S_IFREG: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a directory. */\n export const S_IFDIR: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a character-oriented device file. */\n export const S_IFCHR: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a block-oriented device file. */\n export const S_IFBLK: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a FIFO/pipe. */\n export const S_IFIFO: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a symbolic link. */\n export const S_IFLNK: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a socket. */\n export const S_IFSOCK: number;\n\n // File Mode Constants\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */\n export const S_IRWXU: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */\n export const S_IRUSR: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */\n export const S_IWUSR: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */\n export const S_IXUSR: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */\n export const S_IRWXG: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */\n export const S_IRGRP: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */\n export const S_IWGRP: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */\n export const S_IXGRP: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */\n export const S_IRWXO: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */\n export const S_IROTH: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */\n export const S_IWOTH: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */\n export const S_IXOTH: number;\n\n /** Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists. */\n export const COPYFILE_EXCL: number;\n }\n\n /**\n * Asynchronously tests a user\'s permissions for the file specified by path.\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function access(path: PathLike, mode: number | undefined, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronously tests a user\'s permissions for the file specified by path.\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function access(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace access {\n /**\n * Asynchronously tests a user\'s permissions for the file specified by path.\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function __promisify__(path: PathLike, mode?: number): Promise;\n }\n\n /**\n * Synchronously tests a user\'s permissions for the file specified by path.\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function accessSync(path: PathLike, mode?: number): void;\n\n /**\n * Returns a new `ReadStream` object.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function createReadStream(path: PathLike, options?: string | {\n flags?: string;\n encoding?: string;\n fd?: number;\n mode?: number;\n autoClose?: boolean;\n start?: number;\n end?: number;\n highWaterMark?: number;\n }): ReadStream;\n\n /**\n * Returns a new `WriteStream` object.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function createWriteStream(path: PathLike, options?: string | {\n flags?: string;\n encoding?: string;\n fd?: number;\n mode?: number;\n autoClose?: boolean;\n start?: number;\n }): WriteStream;\n\n /**\n * Asynchronous fdatasync(2) - synchronize a file\'s in-core state with storage device.\n * @param fd A file descriptor.\n */\n export function fdatasync(fd: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace fdatasync {\n /**\n * Asynchronous fdatasync(2) - synchronize a file\'s in-core state with storage device.\n * @param fd A file descriptor.\n */\n export function __promisify__(fd: number): Promise;\n }\n\n /**\n * Synchronous fdatasync(2) - synchronize a file\'s in-core state with storage device.\n * @param fd A file descriptor.\n */\n export function fdatasyncSync(fd: number): void;\n\n /**\n * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.\n * No arguments other than a possible exception are given to the callback function.\n * Node.js makes no guarantees about the atomicity of the copy operation.\n * If an error occurs after the destination file has been opened for writing, Node.js will attempt\n * to remove the destination.\n * @param src A path to the source file.\n * @param dest A path to the destination file.\n */\n export function copyFile(src: PathLike, dest: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n /**\n * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.\n * No arguments other than a possible exception are given to the callback function.\n * Node.js makes no guarantees about the atomicity of the copy operation.\n * If an error occurs after the destination file has been opened for writing, Node.js will attempt\n * to remove the destination.\n * @param src A path to the source file.\n * @param dest A path to the destination file.\n * @param flags An integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists.\n */\n export function copyFile(src: PathLike, dest: PathLike, flags: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace copyFile {\n /**\n * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.\n * No arguments other than a possible exception are given to the callback function.\n * Node.js makes no guarantees about the atomicity of the copy operation.\n * If an error occurs after the destination file has been opened for writing, Node.js will attempt\n * to remove the destination.\n * @param src A path to the source file.\n * @param dest A path to the destination file.\n * @param flags An optional integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists.\n */\n export function __promisify__(src: PathLike, dst: PathLike, flags?: number): Promise;\n }\n\n /**\n * Synchronously copies src to dest. By default, dest is overwritten if it already exists.\n * Node.js makes no guarantees about the atomicity of the copy operation.\n * If an error occurs after the destination file has been opened for writing, Node.js will attempt\n * to remove the destination.\n * @param src A path to the source file.\n * @param dest A path to the destination file.\n * @param flags An optional integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists.\n */\n export function copyFileSync(src: PathLike, dest: PathLike, flags?: number): void;\n}\n\ndeclare module "path" {\n /**\n * A parsed path object generated by path.parse() or consumed by path.format().\n */\n export interface ParsedPath {\n /**\n * The root of the path such as \'/\' or \'c:\\\'\n */\n root: string;\n /**\n * The full directory path such as \'/home/user/dir\' or \'c:\\path\\dir\'\n */\n dir: string;\n /**\n * The file name including extension (if any) such as \'index.html\'\n */\n base: string;\n /**\n * The file extension (if any) such as \'.html\'\n */\n ext: string;\n /**\n * The file name without extension (if any) such as \'index\'\n */\n name: string;\n }\n export interface FormatInputPathObject {\n /**\n * The root of the path such as \'/\' or \'c:\\\'\n */\n root?: string;\n /**\n * The full directory path such as \'/home/user/dir\' or \'c:\\path\\dir\'\n */\n dir?: string;\n /**\n * The file name including extension (if any) such as \'index.html\'\n */\n base?: string;\n /**\n * The file extension (if any) such as \'.html\'\n */\n ext?: string;\n /**\n * The file name without extension (if any) such as \'index\'\n */\n name?: string;\n }\n\n /**\n * Normalize a string path, reducing \'..\' and \'.\' parts.\n * When multiple slashes are found, they\'re replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used.\n *\n * @param p string path to normalize.\n */\n export function normalize(p: string): string;\n /**\n * Join all arguments together and normalize the resulting path.\n * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown.\n *\n * @param paths paths to join.\n */\n export function join(...paths: string[]): string;\n /**\n * The right-most parameter is considered {to}. Other parameters are considered an array of {from}.\n *\n * Starting from leftmost {from} paramter, resolves {to} to an absolute path.\n *\n * If {to} isn\'t already absolute, {from} arguments are prepended in right to left order, until an absolute path is found. If after using all {from} paths still no absolute path is found, the current working directory is used as well. The resulting path is normalized, and trailing slashes are removed unless the path gets resolved to the root directory.\n *\n * @param pathSegments string paths to join. Non-string arguments are ignored.\n */\n export function resolve(...pathSegments: string[]): string;\n /**\n * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory.\n *\n * @param path path to test.\n */\n export function isAbsolute(path: string): boolean;\n /**\n * Solve the relative path from {from} to {to}.\n * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve.\n */\n export function relative(from: string, to: string): string;\n /**\n * Return the directory name of a path. Similar to the Unix dirname command.\n *\n * @param p the path to evaluate.\n */\n export function dirname(p: string): string;\n /**\n * Return the last portion of a path. Similar to the Unix basename command.\n * Often used to extract the file name from a fully qualified path.\n *\n * @param p the path to evaluate.\n * @param ext optionally, an extension to remove from the result.\n */\n export function basename(p: string, ext?: string): string;\n /**\n * Return the extension of the path, from the last \'.\' to end of string in the last portion of the path.\n * If there is no \'.\' in the last portion of the path or the first character of it is \'.\', then it returns an empty string\n *\n * @param p the path to evaluate.\n */\n export function extname(p: string): string;\n /**\n * The platform-specific file separator. \'\\\\\' or \'/\'.\n */\n export var sep: \'\\\\\' | \'/\';\n /**\n * The platform-specific file delimiter. \';\' or \':\'.\n */\n export var delimiter: \';\' | \':\';\n /**\n * Returns an object from a path string - the opposite of format().\n *\n * @param pathString path to evaluate.\n */\n export function parse(pathString: string): ParsedPath;\n /**\n * Returns a path string from an object - the opposite of parse().\n *\n * @param pathString path to evaluate.\n */\n export function format(pathObject: FormatInputPathObject): string;\n\n export module posix {\n export function normalize(p: string): string;\n export function join(...paths: any[]): string;\n export function resolve(...pathSegments: any[]): string;\n export function isAbsolute(p: string): boolean;\n export function relative(from: string, to: string): string;\n export function dirname(p: string): string;\n export function basename(p: string, ext?: string): string;\n export function extname(p: string): string;\n export var sep: string;\n export var delimiter: string;\n export function parse(p: string): ParsedPath;\n export function format(pP: FormatInputPathObject): string;\n }\n\n export module win32 {\n export function normalize(p: string): string;\n export function join(...paths: any[]): string;\n export function resolve(...pathSegments: any[]): string;\n export function isAbsolute(p: string): boolean;\n export function relative(from: string, to: string): string;\n export function dirname(p: string): string;\n export function basename(p: string, ext?: string): string;\n export function extname(p: string): string;\n export var sep: string;\n export var delimiter: string;\n export function parse(p: string): ParsedPath;\n export function format(pP: FormatInputPathObject): string;\n }\n}\n\ndeclare module "string_decoder" {\n export interface NodeStringDecoder {\n write(buffer: Buffer): string;\n end(buffer?: Buffer): string;\n }\n export var StringDecoder: {\n new(encoding?: string): NodeStringDecoder;\n };\n}\n\ndeclare module "tls" {\n import * as crypto from "crypto";\n import * as dns from "dns";\n import * as net from "net";\n import * as stream from "stream";\n\n var CLIENT_RENEG_LIMIT: number;\n var CLIENT_RENEG_WINDOW: number;\n\n export interface Certificate {\n /**\n * Country code.\n */\n C: string;\n /**\n * Street.\n */\n ST: string;\n /**\n * Locality.\n */\n L: string;\n /**\n * Organization.\n */\n O: string;\n /**\n * Organizational unit.\n */\n OU: string;\n /**\n * Common name.\n */\n CN: string;\n }\n\n export interface PeerCertificate {\n subject: Certificate;\n issuer: Certificate;\n subjectaltname: string;\n infoAccess: { [index: string]: string[] | undefined };\n modulus: string;\n exponent: string;\n valid_from: string;\n valid_to: string;\n fingerprint: string;\n ext_key_usage: string[];\n serialNumber: string;\n raw: Buffer;\n }\n\n export interface DetailedPeerCertificate extends PeerCertificate {\n issuerCertificate: DetailedPeerCertificate;\n }\n\n export interface CipherNameAndProtocol {\n /**\n * The cipher name.\n */\n name: string;\n /**\n * SSL/TLS protocol version.\n */\n version: string;\n }\n\n export class TLSSocket extends net.Socket {\n /**\n * Construct a new tls.TLSSocket object from an existing TCP socket.\n */\n constructor(socket: net.Socket, options?: {\n /**\n * An optional TLS context object from tls.createSecureContext()\n */\n secureContext?: SecureContext,\n /**\n * If true the TLS socket will be instantiated in server-mode.\n * Defaults to false.\n */\n isServer?: boolean,\n /**\n * An optional net.Server instance.\n */\n server?: net.Server,\n /**\n * If true the server will request a certificate from clients that\n * connect and attempt to verify that certificate. Defaults to\n * false.\n */\n requestCert?: boolean,\n /**\n * If true the server will reject any connection which is not\n * authorized with the list of supplied CAs. This option only has an\n * effect if requestCert is true. Defaults to false.\n */\n rejectUnauthorized?: boolean,\n /**\n * An array of strings or a Buffer naming possible NPN protocols.\n * (Protocols should be ordered by their priority.)\n */\n NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array,\n /**\n * An array of strings or a Buffer naming possible ALPN protocols.\n * (Protocols should be ordered by their priority.) When the server\n * receives both NPN and ALPN extensions from the client, ALPN takes\n * precedence over NPN and the server does not send an NPN extension\n * to the client.\n */\n ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array,\n /**\n * SNICallback(servername, cb) A function that will be\n * called if the client supports SNI TLS extension. Two arguments\n * will be passed when called: servername and cb. SNICallback should\n * invoke cb(null, ctx), where ctx is a SecureContext instance.\n * (tls.createSecureContext(...) can be used to get a proper\n * SecureContext.) If SNICallback wasn\'t provided the default callback\n * with high-level API will be used (see below).\n */\n SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void,\n /**\n * An optional Buffer instance containing a TLS session.\n */\n session?: Buffer,\n /**\n * If true, specifies that the OCSP status request extension will be\n * added to the client hello and an \'OCSPResponse\' event will be\n * emitted on the socket before establishing a secure communication\n */\n requestOCSP?: boolean\n });\n\n /**\n * A boolean that is true if the peer certificate was signed by one of the specified CAs, otherwise false.\n */\n authorized: boolean;\n /**\n * The reason why the peer\'s certificate has not been verified.\n * This property becomes available only when tlsSocket.authorized === false.\n */\n authorizationError: Error;\n /**\n * Static boolean value, always true.\n * May be used to distinguish TLS sockets from regular ones.\n */\n encrypted: boolean;\n /**\n * Returns an object representing the cipher name and the SSL/TLS protocol version of the current connection.\n * @returns Returns an object representing the cipher name\n * and the SSL/TLS protocol version of the current connection.\n */\n getCipher(): CipherNameAndProtocol;\n /**\n * Returns an object representing the peer\'s certificate.\n * The returned object has some properties corresponding to the field of the certificate.\n * If detailed argument is true the full chain with issuer property will be returned,\n * if false only the top certificate without issuer property.\n * If the peer does not provide a certificate, it returns null or an empty object.\n * @param detailed - If true; the full chain with issuer property will be returned.\n * @returns An object representing the peer\'s certificate.\n */\n getPeerCertificate(detailed: true): DetailedPeerCertificate;\n getPeerCertificate(detailed?: false): PeerCertificate;\n getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate;\n /**\n * Returns a string containing the negotiated SSL/TLS protocol version of the current connection.\n * The value `\'unknown\'` will be returned for connected sockets that have not completed the handshaking process.\n * The value `null` will be returned for server sockets or disconnected client sockets.\n * See https://www.openssl.org/docs/man1.0.2/ssl/SSL_get_version.html for more information.\n * @returns negotiated SSL/TLS protocol version of the current connection\n */\n getProtocol(): string | null;\n /**\n * Could be used to speed up handshake establishment when reconnecting to the server.\n * @returns ASN.1 encoded TLS session or undefined if none was negotiated.\n */\n getSession(): any;\n /**\n * NOTE: Works only with client TLS sockets.\n * Useful only for debugging, for session reuse provide session option to tls.connect().\n * @returns TLS session ticket or undefined if none was negotiated.\n */\n getTLSTicket(): any;\n /**\n * Initiate TLS renegotiation process.\n *\n * NOTE: Can be used to request peer\'s certificate after the secure connection has been established.\n * ANOTHER NOTE: When running as the server, socket will be destroyed with an error after handshakeTimeout timeout.\n * @param options - The options may contain the following fields: rejectUnauthorized,\n * requestCert (See tls.createServer() for details).\n * @param callback - callback(err) will be executed with null as err, once the renegotiation\n * is successfully completed.\n */\n renegotiate(options: { rejectUnauthorized?: boolean, requestCert?: boolean }, callback: (err: Error | null) => void): any;\n /**\n * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512).\n * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by\n * the TLS layer until the entire fragment is received and its integrity is verified;\n * large fragments can span multiple roundtrips, and their processing can be delayed due to packet\n * loss or reordering. However, smaller fragments add extra TLS framing bytes and CPU overhead,\n * which may decrease overall server throughput.\n * @param size - TLS fragment size (default and maximum value is: 16384, minimum is: 512).\n * @returns Returns true on success, false otherwise.\n */\n setMaxSendFragment(size: number): boolean;\n\n /**\n * events.EventEmitter\n * 1. OCSPResponse\n * 2. secureConnect\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this;\n addListener(event: "secureConnect", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "OCSPResponse", response: Buffer): boolean;\n emit(event: "secureConnect"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "OCSPResponse", listener: (response: Buffer) => void): this;\n on(event: "secureConnect", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "OCSPResponse", listener: (response: Buffer) => void): this;\n once(event: "secureConnect", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this;\n prependListener(event: "secureConnect", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this;\n prependOnceListener(event: "secureConnect", listener: () => void): this;\n }\n\n export interface TlsOptions extends SecureContextOptions {\n handshakeTimeout?: number;\n requestCert?: boolean;\n rejectUnauthorized?: boolean;\n NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array;\n ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array;\n SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void;\n sessionTimeout?: number;\n ticketKeys?: Buffer;\n }\n\n export interface ConnectionOptions extends SecureContextOptions {\n host?: string;\n port?: number;\n path?: string; // Creates unix socket connection to path. If this option is specified, `host` and `port` are ignored.\n socket?: net.Socket; // Establish secure connection on a given socket rather than creating a new socket\n rejectUnauthorized?: boolean; // Defaults to true\n NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array;\n ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array;\n checkServerIdentity?: typeof checkServerIdentity;\n servername?: string; // SNI TLS Extension\n session?: Buffer;\n minDHSize?: number;\n secureContext?: SecureContext; // If not provided, the entire ConnectionOptions object will be passed to tls.createSecureContext()\n lookup?: net.LookupFunction;\n }\n\n export class Server extends net.Server {\n addContext(hostName: string, credentials: {\n key: string;\n cert: string;\n ca: string;\n }): void;\n\n /**\n * events.EventEmitter\n * 1. tlsClientError\n * 2. newSession\n * 3. OCSPRequest\n * 4. resumeSession\n * 5. secureConnection\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;\n addListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this;\n addListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this;\n addListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this;\n addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean;\n emit(event: "newSession", sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void): boolean;\n emit(event: "OCSPRequest", certificate: Buffer, issuer: Buffer, callback: Function): boolean;\n emit(event: "resumeSession", sessionId: any, callback: (err: Error, sessionData: any) => void): boolean;\n emit(event: "secureConnection", tlsSocket: TLSSocket): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;\n on(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this;\n on(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this;\n on(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this;\n on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;\n once(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this;\n once(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this;\n once(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this;\n once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;\n prependListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this;\n prependListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this;\n prependListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this;\n prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;\n prependOnceListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this;\n prependOnceListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this;\n prependOnceListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this;\n prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;\n }\n\n export interface ClearTextStream extends stream.Duplex {\n authorized: boolean;\n authorizationError: Error;\n getPeerCertificate(): any;\n getCipher: {\n name: string;\n version: string;\n };\n address: {\n port: number;\n family: string;\n address: string;\n };\n remoteAddress: string;\n remotePort: number;\n }\n\n export interface SecurePair {\n encrypted: any;\n cleartext: any;\n }\n\n export interface SecureContextOptions {\n pfx?: string | Buffer | Array;\n key?: string | Buffer | Array;\n passphrase?: string;\n cert?: string | Buffer | Array;\n ca?: string | Buffer | Array;\n ciphers?: string;\n honorCipherOrder?: boolean;\n ecdhCurve?: string;\n crl?: string | Buffer | Array;\n dhparam?: string | Buffer;\n secureOptions?: number; // Value is a numeric bitmask of the `SSL_OP_*` options\n secureProtocol?: string; // SSL Method, e.g. SSLv23_method\n sessionIdContext?: string;\n }\n\n export interface SecureContext {\n context: any;\n }\n\n /*\n * Verifies the certificate `cert` is issued to host `host`.\n * @host The hostname to verify the certificate against\n * @cert PeerCertificate representing the peer\'s certificate\n *\n * Returns Error object, populating it with the reason, host and cert on failure. On success, returns undefined.\n */\n export function checkServerIdentity(host: string, cert: PeerCertificate): Error | undefined;\n export function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server;\n export function connect(options: ConnectionOptions, secureConnectionListener?: () => void): TLSSocket;\n export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;\n export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;\n export function createSecurePair(credentials?: crypto.Credentials, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair;\n export function createSecureContext(details: SecureContextOptions): SecureContext;\n export function getCiphers(): string[];\n\n export var DEFAULT_ECDH_CURVE: string;\n}\n\ndeclare module "crypto" {\n export interface Certificate {\n exportChallenge(spkac: string | Buffer): Buffer;\n exportPublicKey(spkac: string | Buffer): Buffer;\n verifySpkac(spkac: Buffer): boolean;\n }\n export var Certificate: {\n new(): Certificate;\n (): Certificate;\n };\n\n export var fips: boolean;\n\n export interface CredentialDetails {\n pfx: string;\n key: string;\n passphrase: string;\n cert: string;\n ca: string | string[];\n crl: string | string[];\n ciphers: string;\n }\n export interface Credentials { context?: any; }\n export function createCredentials(details: CredentialDetails): Credentials;\n export function createHash(algorithm: string): Hash;\n export function createHmac(algorithm: string, key: string | Buffer): Hmac;\n\n type Utf8AsciiLatin1Encoding = "utf8" | "ascii" | "latin1";\n type HexBase64Latin1Encoding = "latin1" | "hex" | "base64";\n type Utf8AsciiBinaryEncoding = "utf8" | "ascii" | "binary";\n type HexBase64BinaryEncoding = "binary" | "base64" | "hex";\n type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid";\n\n export interface Hash extends NodeJS.ReadWriteStream {\n update(data: string | Buffer | DataView): Hash;\n update(data: string | Buffer | DataView, input_encoding: Utf8AsciiLatin1Encoding): Hash;\n digest(): Buffer;\n digest(encoding: HexBase64Latin1Encoding): string;\n }\n export interface Hmac extends NodeJS.ReadWriteStream {\n update(data: string | Buffer | DataView): Hmac;\n update(data: string | Buffer | DataView, input_encoding: Utf8AsciiLatin1Encoding): Hmac;\n digest(): Buffer;\n digest(encoding: HexBase64Latin1Encoding): string;\n }\n export function createCipher(algorithm: string, password: any): Cipher;\n export function createCipheriv(algorithm: string, key: any, iv: any): Cipher;\n export interface Cipher extends NodeJS.ReadWriteStream {\n update(data: Buffer | DataView): Buffer;\n update(data: string, input_encoding: Utf8AsciiBinaryEncoding): Buffer;\n update(data: Buffer | DataView, input_encoding: any, output_encoding: HexBase64BinaryEncoding): string;\n update(data: string, input_encoding: Utf8AsciiBinaryEncoding, output_encoding: HexBase64BinaryEncoding): string;\n final(): Buffer;\n final(output_encoding: string): string;\n setAutoPadding(auto_padding?: boolean): this;\n getAuthTag(): Buffer;\n setAAD(buffer: Buffer): this;\n }\n export function createDecipher(algorithm: string, password: any): Decipher;\n export function createDecipheriv(algorithm: string, key: any, iv: any): Decipher;\n export interface Decipher extends NodeJS.ReadWriteStream {\n update(data: Buffer | DataView): Buffer;\n update(data: string, input_encoding: HexBase64BinaryEncoding): Buffer;\n update(data: Buffer | DataView, input_encoding: any, output_encoding: Utf8AsciiBinaryEncoding): string;\n update(data: string, input_encoding: HexBase64BinaryEncoding, output_encoding: Utf8AsciiBinaryEncoding): string;\n final(): Buffer;\n final(output_encoding: string): string;\n setAutoPadding(auto_padding?: boolean): this;\n setAuthTag(tag: Buffer): this;\n setAAD(buffer: Buffer): this;\n }\n export function createSign(algorithm: string): Signer;\n export interface Signer extends NodeJS.WritableStream {\n update(data: string | Buffer | DataView): Signer;\n update(data: string | Buffer | DataView, input_encoding: Utf8AsciiLatin1Encoding): Signer;\n sign(private_key: string | { key: string; passphrase: string }): Buffer;\n sign(private_key: string | { key: string; passphrase: string }, output_format: HexBase64Latin1Encoding): string;\n }\n export function createVerify(algorith: string): Verify;\n export interface Verify extends NodeJS.WritableStream {\n update(data: string | Buffer | DataView): Verify;\n update(data: string | Buffer | DataView, input_encoding: Utf8AsciiLatin1Encoding): Verify;\n verify(object: string | Object, signature: Buffer | DataView): boolean;\n verify(object: string | Object, signature: string, signature_format: HexBase64Latin1Encoding): boolean;\n // https://nodejs.org/api/crypto.html#crypto_verifier_verify_object_signature_signature_format\n // The signature field accepts a TypedArray type, but it is only available starting ES2017\n }\n export function createDiffieHellman(prime_length: number, generator?: number): DiffieHellman;\n export function createDiffieHellman(prime: Buffer): DiffieHellman;\n export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding): DiffieHellman;\n export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: number | Buffer): DiffieHellman;\n export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: string, generator_encoding: HexBase64Latin1Encoding): DiffieHellman;\n export interface DiffieHellman {\n generateKeys(): Buffer;\n generateKeys(encoding: HexBase64Latin1Encoding): string;\n computeSecret(other_public_key: Buffer): Buffer;\n computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer;\n computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string;\n getPrime(): Buffer;\n getPrime(encoding: HexBase64Latin1Encoding): string;\n getGenerator(): Buffer;\n getGenerator(encoding: HexBase64Latin1Encoding): string;\n getPublicKey(): Buffer;\n getPublicKey(encoding: HexBase64Latin1Encoding): string;\n getPrivateKey(): Buffer;\n getPrivateKey(encoding: HexBase64Latin1Encoding): string;\n setPublicKey(public_key: Buffer): void;\n setPublicKey(public_key: string, encoding: string): void;\n setPrivateKey(private_key: Buffer): void;\n setPrivateKey(private_key: string, encoding: string): void;\n verifyError: number;\n }\n export function getDiffieHellman(group_name: string): DiffieHellman;\n export function pbkdf2(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string, callback: (err: Error, derivedKey: Buffer) => any): void;\n export function pbkdf2Sync(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string): Buffer;\n export function randomBytes(size: number): Buffer;\n export function randomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void;\n export function pseudoRandomBytes(size: number): Buffer;\n export function pseudoRandomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void;\n export function randomFillSync(buffer: Buffer | Uint8Array, offset?: number, size?: number): Buffer;\n export function randomFill(buffer: Buffer, callback: (err: Error, buf: Buffer) => void): void;\n export function randomFill(buffer: Uint8Array, callback: (err: Error, buf: Uint8Array) => void): void;\n export function randomFill(buffer: Buffer, offset: number, callback: (err: Error, buf: Buffer) => void): void;\n export function randomFill(buffer: Uint8Array, offset: number, callback: (err: Error, buf: Uint8Array) => void): void;\n export function randomFill(buffer: Buffer, offset: number, size: number, callback: (err: Error, buf: Buffer) => void): void;\n export function randomFill(buffer: Uint8Array, offset: number, size: number, callback: (err: Error, buf: Uint8Array) => void): void;\n export interface RsaPublicKey {\n key: string;\n padding?: number;\n }\n export interface RsaPrivateKey {\n key: string;\n passphrase?: string;\n padding?: number;\n }\n export function publicEncrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer;\n export function privateDecrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer;\n export function privateEncrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer;\n export function publicDecrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer;\n export function getCiphers(): string[];\n export function getCurves(): string[];\n export function getHashes(): string[];\n export interface ECDH {\n generateKeys(): Buffer;\n generateKeys(encoding: HexBase64Latin1Encoding): string;\n generateKeys(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string;\n computeSecret(other_public_key: Buffer): Buffer;\n computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer;\n computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string;\n getPrivateKey(): Buffer;\n getPrivateKey(encoding: HexBase64Latin1Encoding): string;\n getPublicKey(): Buffer;\n getPublicKey(encoding: HexBase64Latin1Encoding): string;\n getPublicKey(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string;\n setPrivateKey(private_key: Buffer): void;\n setPrivateKey(private_key: string, encoding: HexBase64Latin1Encoding): void;\n }\n export function createECDH(curve_name: string): ECDH;\n export function timingSafeEqual(a: Buffer, b: Buffer): boolean;\n export var DEFAULT_ENCODING: string;\n}\n\ndeclare module "stream" {\n import * as events from "events";\n\n class internal extends events.EventEmitter {\n pipe(destination: T, options?: { end?: boolean; }): T;\n }\n\n namespace internal {\n export class Stream extends internal { }\n\n export interface ReadableOptions {\n highWaterMark?: number;\n encoding?: string;\n objectMode?: boolean;\n read?: (this: Readable, size?: number) => any;\n destroy?: (error?: Error) => any;\n }\n\n export class Readable extends Stream implements NodeJS.ReadableStream {\n readable: boolean;\n readonly readableHighWaterMark: number;\n constructor(opts?: ReadableOptions);\n _read(size: number): void;\n read(size?: number): any;\n setEncoding(encoding: string): this;\n pause(): this;\n resume(): this;\n isPaused(): boolean;\n unpipe(destination?: T): this;\n unshift(chunk: any): void;\n wrap(oldStream: NodeJS.ReadableStream): this;\n push(chunk: any, encoding?: string): boolean;\n _destroy(err: Error, callback: Function): void;\n destroy(error?: Error): void;\n\n /**\n * Event emitter\n * The defined events on documents including:\n * 1. close\n * 2. data\n * 3. end\n * 4. readable\n * 5. error\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n addListener(event: "end", listener: () => void): this;\n addListener(event: "readable", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close"): boolean;\n emit(event: "data", chunk: Buffer | string): boolean;\n emit(event: "end"): boolean;\n emit(event: "readable"): boolean;\n emit(event: "error", err: Error): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "data", listener: (chunk: Buffer | string) => void): this;\n on(event: "end", listener: () => void): this;\n on(event: "readable", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "data", listener: (chunk: Buffer | string) => void): this;\n once(event: "end", listener: () => void): this;\n once(event: "readable", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n prependListener(event: "end", listener: () => void): this;\n prependListener(event: "readable", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n prependOnceListener(event: "end", listener: () => void): this;\n prependOnceListener(event: "readable", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n\n removeListener(event: string, listener: (...args: any[]) => void): this;\n removeListener(event: "close", listener: () => void): this;\n removeListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n removeListener(event: "end", listener: () => void): this;\n removeListener(event: "readable", listener: () => void): this;\n removeListener(event: "error", listener: (err: Error) => void): this;\n }\n\n export interface WritableOptions {\n highWaterMark?: number;\n decodeStrings?: boolean;\n objectMode?: boolean;\n write?: (chunk: any, encoding: string, callback: Function) => any;\n writev?: (chunks: Array<{ chunk: any, encoding: string }>, callback: Function) => any;\n destroy?: (error?: Error) => any;\n final?: (callback: (error?: Error) => void) => void;\n }\n\n export class Writable extends Stream implements NodeJS.WritableStream {\n writable: boolean;\n readonly writableHighWaterMark: number;\n constructor(opts?: WritableOptions);\n _write(chunk: any, encoding: string, callback: (err?: Error) => void): void;\n _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (err?: Error) => void): void;\n _destroy(err: Error, callback: Function): void;\n _final(callback: Function): void;\n write(chunk: any, cb?: Function): boolean;\n write(chunk: any, encoding?: string, cb?: Function): boolean;\n setDefaultEncoding(encoding: string): this;\n end(cb?: Function): void;\n end(chunk: any, cb?: Function): void;\n end(chunk: any, encoding?: string, cb?: Function): void;\n cork(): void;\n uncork(): void;\n destroy(error?: Error): void;\n\n /**\n * Event emitter\n * The defined events on documents including:\n * 1. close\n * 2. drain\n * 3. error\n * 4. finish\n * 5. pipe\n * 6. unpipe\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "drain", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "finish", listener: () => void): this;\n addListener(event: "pipe", listener: (src: Readable) => void): this;\n addListener(event: "unpipe", listener: (src: Readable) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close"): boolean;\n emit(event: "drain", chunk: Buffer | string): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "finish"): boolean;\n emit(event: "pipe", src: Readable): boolean;\n emit(event: "unpipe", src: Readable): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "drain", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "finish", listener: () => void): this;\n on(event: "pipe", listener: (src: Readable) => void): this;\n on(event: "unpipe", listener: (src: Readable) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "drain", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "finish", listener: () => void): this;\n once(event: "pipe", listener: (src: Readable) => void): this;\n once(event: "unpipe", listener: (src: Readable) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "drain", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "finish", listener: () => void): this;\n prependListener(event: "pipe", listener: (src: Readable) => void): this;\n prependListener(event: "unpipe", listener: (src: Readable) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "drain", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "finish", listener: () => void): this;\n prependOnceListener(event: "pipe", listener: (src: Readable) => void): this;\n prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this;\n\n removeListener(event: string, listener: (...args: any[]) => void): this;\n removeListener(event: "close", listener: () => void): this;\n removeListener(event: "drain", listener: () => void): this;\n removeListener(event: "error", listener: (err: Error) => void): this;\n removeListener(event: "finish", listener: () => void): this;\n removeListener(event: "pipe", listener: (src: Readable) => void): this;\n removeListener(event: "unpipe", listener: (src: Readable) => void): this;\n }\n\n export interface DuplexOptions extends ReadableOptions, WritableOptions {\n allowHalfOpen?: boolean;\n readableObjectMode?: boolean;\n writableObjectMode?: boolean;\n }\n\n // Note: Duplex extends both Readable and Writable.\n export class Duplex extends Readable implements Writable {\n writable: boolean;\n readonly writableHighWaterMark: number;\n constructor(opts?: DuplexOptions);\n _write(chunk: any, encoding: string, callback: (err?: Error) => void): void;\n _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (err?: Error) => void): void;\n _destroy(err: Error, callback: Function): void;\n _final(callback: Function): void;\n write(chunk: any, cb?: Function): boolean;\n write(chunk: any, encoding?: string, cb?: Function): boolean;\n setDefaultEncoding(encoding: string): this;\n end(cb?: Function): void;\n end(chunk: any, cb?: Function): void;\n end(chunk: any, encoding?: string, cb?: Function): void;\n cork(): void;\n uncork(): void;\n }\n\n export interface TransformOptions extends DuplexOptions {\n transform?: (chunk: string | Buffer, encoding: string, callback: Function) => any;\n flush?: (callback: Function) => any;\n }\n\n export class Transform extends Duplex {\n constructor(opts?: TransformOptions);\n _transform(chunk: any, encoding: string, callback: Function): void;\n destroy(error?: Error): void;\n }\n\n export class PassThrough extends Transform { }\n }\n\n export = internal;\n}\n\ndeclare module "util" {\n export interface InspectOptions extends NodeJS.InspectOptions { }\n export function format(format: any, ...param: any[]): string;\n export function debug(string: string): void;\n export function error(...param: any[]): void;\n export function puts(...param: any[]): void;\n export function print(...param: any[]): void;\n export function log(string: string): void;\n export var inspect: {\n (object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string;\n (object: any, options: InspectOptions): string;\n colors: {\n [color: string]: [number, number] | undefined\n }\n styles: {\n [style: string]: string | undefined\n }\n defaultOptions: InspectOptions;\n custom: symbol;\n };\n export function isArray(object: any): object is any[];\n export function isRegExp(object: any): object is RegExp;\n export function isDate(object: any): object is Date;\n export function isError(object: any): object is Error;\n export function inherits(constructor: any, superConstructor: any): void;\n export function debuglog(key: string): (msg: string, ...param: any[]) => void;\n export function isBoolean(object: any): object is boolean;\n export function isBuffer(object: any): object is Buffer;\n export function isFunction(object: any): boolean;\n export function isNull(object: any): object is null;\n export function isNullOrUndefined(object: any): object is null | undefined;\n export function isNumber(object: any): object is number;\n export function isObject(object: any): boolean;\n export function isPrimitive(object: any): boolean;\n export function isString(object: any): object is string;\n export function isSymbol(object: any): object is symbol;\n export function isUndefined(object: any): object is undefined;\n export function deprecate(fn: T, message: string): T;\n\n export interface CustomPromisify extends Function {\n __promisify__: TCustom;\n }\n\n export function callbackify(fn: () => Promise): (callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: () => Promise): (callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n export function callbackify(fn: (arg1: T1) => Promise): (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: (arg1: T1) => Promise): (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2) => Promise): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2) => Promise): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n\n export function promisify(fn: CustomPromisify): TCustom;\n export function promisify(fn: (callback: (err: Error | null, result: TResult) => void) => void): () => Promise;\n export function promisify(fn: (callback: (err: Error | null) => void) => void): () => Promise;\n export function promisify(fn: (arg1: T1, callback: (err: Error | null, result: TResult) => void) => void): (arg1: T1) => Promise;\n export function promisify(fn: (arg1: T1, callback: (err: Error | null) => void) => void): (arg1: T1) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, callback: (err: Error | null, result: TResult) => void) => void): (arg1: T1, arg2: T2) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, callback: (err: Error | null) => void) => void): (arg1: T1, arg2: T2) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: Error | null, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: Error | null) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: Error | null, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: Error | null) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: Error | null, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: Error | null) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise;\n export function promisify(fn: Function): Function;\n export namespace promisify {\n const custom: symbol;\n }\n\n export class TextDecoder {\n readonly encoding: string;\n readonly fatal: boolean;\n readonly ignoreBOM: boolean;\n constructor(\n encoding?: string,\n options?: { fatal?: boolean; ignoreBOM?: boolean }\n );\n decode(\n input?:\n Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Uint8ClampedArray\n | Float32Array\n | Float64Array\n | DataView\n | ArrayBuffer\n | null,\n options?: { stream?: boolean }\n ): string;\n }\n\n export class TextEncoder {\n readonly encoding: string;\n constructor();\n encode(input?: string): Uint8Array;\n }\n}\n\ndeclare module "assert" {\n function internal(value: any, message?: string): void;\n namespace internal {\n export class AssertionError implements Error {\n name: string;\n message: string;\n actual: any;\n expected: any;\n operator: string;\n generatedMessage: boolean;\n\n constructor(options?: {\n message?: string; actual?: any; expected?: any;\n operator?: string; stackStartFunction?: Function\n });\n }\n\n export function fail(message: string): never;\n export function fail(actual: any, expected: any, message?: string, operator?: string): never;\n export function ok(value: any, message?: string): void;\n export function equal(actual: any, expected: any, message?: string): void;\n export function notEqual(actual: any, expected: any, message?: string): void;\n export function deepEqual(actual: any, expected: any, message?: string): void;\n export function notDeepEqual(acutal: any, expected: any, message?: string): void;\n export function strictEqual(actual: any, expected: any, message?: string): void;\n export function notStrictEqual(actual: any, expected: any, message?: string): void;\n export function deepStrictEqual(actual: any, expected: any, message?: string): void;\n export function notDeepStrictEqual(actual: any, expected: any, message?: string): void;\n\n export function throws(block: Function, message?: string): void;\n export function throws(block: Function, error: Function, message?: string): void;\n export function throws(block: Function, error: RegExp, message?: string): void;\n export function throws(block: Function, error: (err: any) => boolean, message?: string): void;\n\n export function doesNotThrow(block: Function, message?: string): void;\n export function doesNotThrow(block: Function, error: Function, message?: string): void;\n export function doesNotThrow(block: Function, error: RegExp, message?: string): void;\n export function doesNotThrow(block: Function, error: (err: any) => boolean, message?: string): void;\n\n export function ifError(value: any): void;\n }\n\n export = internal;\n}\n\ndeclare module "tty" {\n import * as net from "net";\n\n export function isatty(fd: number): boolean;\n export class ReadStream extends net.Socket {\n isRaw: boolean;\n setRawMode(mode: boolean): void;\n isTTY: boolean;\n }\n export class WriteStream extends net.Socket {\n columns: number;\n rows: number;\n isTTY: boolean;\n }\n}\n\ndeclare module "domain" {\n import * as events from "events";\n\n export class Domain extends events.EventEmitter implements NodeJS.Domain {\n run(fn: Function): void;\n add(emitter: events.EventEmitter): void;\n remove(emitter: events.EventEmitter): void;\n bind(cb: (err: Error, data: any) => any): any;\n intercept(cb: (data: any) => any): any;\n dispose(): void;\n members: any[];\n enter(): void;\n exit(): void;\n }\n\n export function create(): Domain;\n}\n\ndeclare module "constants" {\n export var E2BIG: number;\n export var EACCES: number;\n export var EADDRINUSE: number;\n export var EADDRNOTAVAIL: number;\n export var EAFNOSUPPORT: number;\n export var EAGAIN: number;\n export var EALREADY: number;\n export var EBADF: number;\n export var EBADMSG: number;\n export var EBUSY: number;\n export var ECANCELED: number;\n export var ECHILD: number;\n export var ECONNABORTED: number;\n export var ECONNREFUSED: number;\n export var ECONNRESET: number;\n export var EDEADLK: number;\n export var EDESTADDRREQ: number;\n export var EDOM: number;\n export var EEXIST: number;\n export var EFAULT: number;\n export var EFBIG: number;\n export var EHOSTUNREACH: number;\n export var EIDRM: number;\n export var EILSEQ: number;\n export var EINPROGRESS: number;\n export var EINTR: number;\n export var EINVAL: number;\n export var EIO: number;\n export var EISCONN: number;\n export var EISDIR: number;\n export var ELOOP: number;\n export var EMFILE: number;\n export var EMLINK: number;\n export var EMSGSIZE: number;\n export var ENAMETOOLONG: number;\n export var ENETDOWN: number;\n export var ENETRESET: number;\n export var ENETUNREACH: number;\n export var ENFILE: number;\n export var ENOBUFS: number;\n export var ENODATA: number;\n export var ENODEV: number;\n export var ENOENT: number;\n export var ENOEXEC: number;\n export var ENOLCK: number;\n export var ENOLINK: number;\n export var ENOMEM: number;\n export var ENOMSG: number;\n export var ENOPROTOOPT: number;\n export var ENOSPC: number;\n export var ENOSR: number;\n export var ENOSTR: number;\n export var ENOSYS: number;\n export var ENOTCONN: number;\n export var ENOTDIR: number;\n export var ENOTEMPTY: number;\n export var ENOTSOCK: number;\n export var ENOTSUP: number;\n export var ENOTTY: number;\n export var ENXIO: number;\n export var EOPNOTSUPP: number;\n export var EOVERFLOW: number;\n export var EPERM: number;\n export var EPIPE: number;\n export var EPROTO: number;\n export var EPROTONOSUPPORT: number;\n export var EPROTOTYPE: number;\n export var ERANGE: number;\n export var EROFS: number;\n export var ESPIPE: number;\n export var ESRCH: number;\n export var ETIME: number;\n export var ETIMEDOUT: number;\n export var ETXTBSY: number;\n export var EWOULDBLOCK: number;\n export var EXDEV: number;\n export var WSAEINTR: number;\n export var WSAEBADF: number;\n export var WSAEACCES: number;\n export var WSAEFAULT: number;\n export var WSAEINVAL: number;\n export var WSAEMFILE: number;\n export var WSAEWOULDBLOCK: number;\n export var WSAEINPROGRESS: number;\n export var WSAEALREADY: number;\n export var WSAENOTSOCK: number;\n export var WSAEDESTADDRREQ: number;\n export var WSAEMSGSIZE: number;\n export var WSAEPROTOTYPE: number;\n export var WSAENOPROTOOPT: number;\n export var WSAEPROTONOSUPPORT: number;\n export var WSAESOCKTNOSUPPORT: number;\n export var WSAEOPNOTSUPP: number;\n export var WSAEPFNOSUPPORT: number;\n export var WSAEAFNOSUPPORT: number;\n export var WSAEADDRINUSE: number;\n export var WSAEADDRNOTAVAIL: number;\n export var WSAENETDOWN: number;\n export var WSAENETUNREACH: number;\n export var WSAENETRESET: number;\n export var WSAECONNABORTED: number;\n export var WSAECONNRESET: number;\n export var WSAENOBUFS: number;\n export var WSAEISCONN: number;\n export var WSAENOTCONN: number;\n export var WSAESHUTDOWN: number;\n export var WSAETOOMANYREFS: number;\n export var WSAETIMEDOUT: number;\n export var WSAECONNREFUSED: number;\n export var WSAELOOP: number;\n export var WSAENAMETOOLONG: number;\n export var WSAEHOSTDOWN: number;\n export var WSAEHOSTUNREACH: number;\n export var WSAENOTEMPTY: number;\n export var WSAEPROCLIM: number;\n export var WSAEUSERS: number;\n export var WSAEDQUOT: number;\n export var WSAESTALE: number;\n export var WSAEREMOTE: number;\n export var WSASYSNOTREADY: number;\n export var WSAVERNOTSUPPORTED: number;\n export var WSANOTINITIALISED: number;\n export var WSAEDISCON: number;\n export var WSAENOMORE: number;\n export var WSAECANCELLED: number;\n export var WSAEINVALIDPROCTABLE: number;\n export var WSAEINVALIDPROVIDER: number;\n export var WSAEPROVIDERFAILEDINIT: number;\n export var WSASYSCALLFAILURE: number;\n export var WSASERVICE_NOT_FOUND: number;\n export var WSATYPE_NOT_FOUND: number;\n export var WSA_E_NO_MORE: number;\n export var WSA_E_CANCELLED: number;\n export var WSAEREFUSED: number;\n export var SIGHUP: number;\n export var SIGINT: number;\n export var SIGILL: number;\n export var SIGABRT: number;\n export var SIGFPE: number;\n export var SIGKILL: number;\n export var SIGSEGV: number;\n export var SIGTERM: number;\n export var SIGBREAK: number;\n export var SIGWINCH: number;\n export var SSL_OP_ALL: number;\n export var SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number;\n export var SSL_OP_CIPHER_SERVER_PREFERENCE: number;\n export var SSL_OP_CISCO_ANYCONNECT: number;\n export var SSL_OP_COOKIE_EXCHANGE: number;\n export var SSL_OP_CRYPTOPRO_TLSEXT_BUG: number;\n export var SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number;\n export var SSL_OP_EPHEMERAL_RSA: number;\n export var SSL_OP_LEGACY_SERVER_CONNECT: number;\n export var SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number;\n export var SSL_OP_MICROSOFT_SESS_ID_BUG: number;\n export var SSL_OP_MSIE_SSLV2_RSA_PADDING: number;\n export var SSL_OP_NETSCAPE_CA_DN_BUG: number;\n export var SSL_OP_NETSCAPE_CHALLENGE_BUG: number;\n export var SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number;\n export var SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number;\n export var SSL_OP_NO_COMPRESSION: number;\n export var SSL_OP_NO_QUERY_MTU: number;\n export var SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number;\n export var SSL_OP_NO_SSLv2: number;\n export var SSL_OP_NO_SSLv3: number;\n export var SSL_OP_NO_TICKET: number;\n export var SSL_OP_NO_TLSv1: number;\n export var SSL_OP_NO_TLSv1_1: number;\n export var SSL_OP_NO_TLSv1_2: number;\n export var SSL_OP_PKCS1_CHECK_1: number;\n export var SSL_OP_PKCS1_CHECK_2: number;\n export var SSL_OP_SINGLE_DH_USE: number;\n export var SSL_OP_SINGLE_ECDH_USE: number;\n export var SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number;\n export var SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number;\n export var SSL_OP_TLS_BLOCK_PADDING_BUG: number;\n export var SSL_OP_TLS_D5_BUG: number;\n export var SSL_OP_TLS_ROLLBACK_BUG: number;\n export var ENGINE_METHOD_DSA: number;\n export var ENGINE_METHOD_DH: number;\n export var ENGINE_METHOD_RAND: number;\n export var ENGINE_METHOD_ECDH: number;\n export var ENGINE_METHOD_ECDSA: number;\n export var ENGINE_METHOD_CIPHERS: number;\n export var ENGINE_METHOD_DIGESTS: number;\n export var ENGINE_METHOD_STORE: number;\n export var ENGINE_METHOD_PKEY_METHS: number;\n export var ENGINE_METHOD_PKEY_ASN1_METHS: number;\n export var ENGINE_METHOD_ALL: number;\n export var ENGINE_METHOD_NONE: number;\n export var DH_CHECK_P_NOT_SAFE_PRIME: number;\n export var DH_CHECK_P_NOT_PRIME: number;\n export var DH_UNABLE_TO_CHECK_GENERATOR: number;\n export var DH_NOT_SUITABLE_GENERATOR: number;\n export var NPN_ENABLED: number;\n export var RSA_PKCS1_PADDING: number;\n export var RSA_SSLV23_PADDING: number;\n export var RSA_NO_PADDING: number;\n export var RSA_PKCS1_OAEP_PADDING: number;\n export var RSA_X931_PADDING: number;\n export var RSA_PKCS1_PSS_PADDING: number;\n export var POINT_CONVERSION_COMPRESSED: number;\n export var POINT_CONVERSION_UNCOMPRESSED: number;\n export var POINT_CONVERSION_HYBRID: number;\n export var O_RDONLY: number;\n export var O_WRONLY: number;\n export var O_RDWR: number;\n export var S_IFMT: number;\n export var S_IFREG: number;\n export var S_IFDIR: number;\n export var S_IFCHR: number;\n export var S_IFBLK: number;\n export var S_IFIFO: number;\n export var S_IFSOCK: number;\n export var S_IRWXU: number;\n export var S_IRUSR: number;\n export var S_IWUSR: number;\n export var S_IXUSR: number;\n export var S_IRWXG: number;\n export var S_IRGRP: number;\n export var S_IWGRP: number;\n export var S_IXGRP: number;\n export var S_IRWXO: number;\n export var S_IROTH: number;\n export var S_IWOTH: number;\n export var S_IXOTH: number;\n export var S_IFLNK: number;\n export var O_CREAT: number;\n export var O_EXCL: number;\n export var O_NOCTTY: number;\n export var O_DIRECTORY: number;\n export var O_NOATIME: number;\n export var O_NOFOLLOW: number;\n export var O_SYNC: number;\n export var O_DSYNC: number;\n export var O_SYMLINK: number;\n export var O_DIRECT: number;\n export var O_NONBLOCK: number;\n export var O_TRUNC: number;\n export var O_APPEND: number;\n export var F_OK: number;\n export var R_OK: number;\n export var W_OK: number;\n export var X_OK: number;\n export var UV_UDP_REUSEADDR: number;\n export var SIGQUIT: number;\n export var SIGTRAP: number;\n export var SIGIOT: number;\n export var SIGBUS: number;\n export var SIGUSR1: number;\n export var SIGUSR2: number;\n export var SIGPIPE: number;\n export var SIGALRM: number;\n export var SIGCHLD: number;\n export var SIGSTKFLT: number;\n export var SIGCONT: number;\n export var SIGSTOP: number;\n export var SIGTSTP: number;\n export var SIGTTIN: number;\n export var SIGTTOU: number;\n export var SIGURG: number;\n export var SIGXCPU: number;\n export var SIGXFSZ: number;\n export var SIGVTALRM: number;\n export var SIGPROF: number;\n export var SIGIO: number;\n export var SIGPOLL: number;\n export var SIGPWR: number;\n export var SIGSYS: number;\n export var SIGUNUSED: number;\n export var defaultCoreCipherList: string;\n export var defaultCipherList: string;\n export var ENGINE_METHOD_RSA: number;\n export var ALPN_ENABLED: number;\n}\n\ndeclare module "module" {\n export = NodeJS.Module;\n}\n\ndeclare module "process" {\n export = process;\n}\n\n// tslint:disable-next-line:no-declare-current-package\ndeclare module "v8" {\n interface HeapSpaceInfo {\n space_name: string;\n space_size: number;\n space_used_size: number;\n space_available_size: number;\n physical_space_size: number;\n }\n\n // ** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */\n type DoesZapCodeSpaceFlag = 0 | 1;\n\n interface HeapInfo {\n total_heap_size: number;\n total_heap_size_executable: number;\n total_physical_size: number;\n total_available_size: number;\n used_heap_size: number;\n heap_size_limit: number;\n malloced_memory: number;\n peak_malloced_memory: number;\n does_zap_garbage: DoesZapCodeSpaceFlag;\n }\n\n export function getHeapStatistics(): HeapInfo;\n export function getHeapSpaceStatistics(): HeapSpaceInfo[];\n export function setFlagsFromString(flags: string): void;\n}\n\ndeclare module "timers" {\n export function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;\n export namespace setTimeout {\n export function __promisify__(ms: number): Promise;\n export function __promisify__(ms: number, value: T): Promise;\n }\n export function clearTimeout(timeoutId: NodeJS.Timer): void;\n export function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;\n export function clearInterval(intervalId: NodeJS.Timer): void;\n export function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any;\n export namespace setImmediate {\n export function __promisify__(): Promise;\n export function __promisify__(value: T): Promise;\n }\n export function clearImmediate(immediateId: any): void;\n}\n\ndeclare module "console" {\n export = console;\n}\n\n/**\n * Async Hooks module: https://nodejs.org/api/async_hooks.html\n */\ndeclare module "async_hooks" {\n /**\n * Returns the asyncId of the current execution context.\n */\n export function executionAsyncId(): number;\n /// @deprecated - replaced by executionAsyncId()\n export function currentId(): number;\n\n /**\n * Returns the ID of the resource responsible for calling the callback that is currently being executed.\n */\n export function triggerAsyncId(): number;\n /// @deprecated - replaced by triggerAsyncId()\n export function triggerId(): number;\n\n export interface HookCallbacks {\n /**\n * Called when a class is constructed that has the possibility to emit an asynchronous event.\n * @param asyncId a unique ID for the async resource\n * @param type the type of the async resource\n * @param triggerAsyncId the unique ID of the async resource in whose execution context this async resource was created\n * @param resource reference to the resource representing the async operation, needs to be released during destroy\n */\n init?(asyncId: number, type: string, triggerAsyncId: number, resource: Object): void;\n\n /**\n * When an asynchronous operation is initiated or completes a callback is called to notify the user.\n * The before callback is called just before said callback is executed.\n * @param asyncId the unique identifier assigned to the resource about to execute the callback.\n */\n before?(asyncId: number): void;\n\n /**\n * Called immediately after the callback specified in before is completed.\n * @param asyncId the unique identifier assigned to the resource which has executed the callback.\n */\n after?(asyncId: number): void;\n\n /**\n * Called when a promise has resolve() called. This may not be in the same execution id\n * as the promise itself.\n * @param asyncId the unique id for the promise that was resolve()d.\n */\n promiseResolve?(asyncId: number): void;\n\n /**\n * Called after the resource corresponding to asyncId is destroyed\n * @param asyncId a unique ID for the async resource\n */\n destroy?(asyncId: number): void;\n }\n\n export interface AsyncHook {\n /**\n * Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop.\n */\n enable(): this;\n\n /**\n * Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled.\n */\n disable(): this;\n }\n\n /**\n * Registers functions to be called for different lifetime events of each async operation.\n * @param options the callbacks to register\n * @return an AsyncHooks instance used for disabling and enabling hooks\n */\n export function createHook(options: HookCallbacks): AsyncHook;\n\n export interface AsyncResourceOptions {\n /**\n * The ID of the execution context that created this async event.\n * Default: `executionAsyncId()`\n */\n triggerAsyncId?: number;\n\n /**\n * Disables automatic `emitDestroy` when the object is garbage collected.\n * This usually does not need to be set (even if `emitDestroy` is called\n * manually), unless the resource\'s `asyncId` is retrieved and the\n * sensitive API\'s `emitDestroy` is called with it.\n * Default: `false`\n */\n requireManualDestroy?: boolean;\n }\n\n /**\n * The class AsyncResource was designed to be extended by the embedder\'s async resources.\n * Using this users can easily trigger the lifetime events of their own resources.\n */\n export class AsyncResource {\n /**\n * AsyncResource() is meant to be extended. Instantiating a\n * new AsyncResource() also triggers init. If triggerAsyncId is omitted then\n * async_hook.executionAsyncId() is used.\n * @param type The type of async event.\n * @param triggerAsyncId The ID of the execution context that created\n * this async event (default: `executionAsyncId()`), or an\n * AsyncResourceOptions object (since 8.10)\n */\n constructor(type: string, triggerAsyncId?: number|AsyncResourceOptions);\n\n /**\n * Call AsyncHooks before callbacks.\n */\n emitBefore(): void;\n\n /**\n * Call AsyncHooks after callbacks\n */\n emitAfter(): void;\n\n /**\n * Call AsyncHooks destroy callbacks.\n */\n emitDestroy(): void;\n\n /**\n * @return the unique ID assigned to this AsyncResource instance.\n */\n asyncId(): number;\n\n /**\n * @return the trigger ID for this AsyncResource instance.\n */\n triggerAsyncId(): number;\n }\n}\n\ndeclare module "http2" {\n import * as events from "events";\n import * as fs from "fs";\n import * as net from "net";\n import * as stream from "stream";\n import * as tls from "tls";\n import * as url from "url";\n\n import { IncomingHttpHeaders, OutgoingHttpHeaders } from "http";\n export { IncomingHttpHeaders, OutgoingHttpHeaders } from "http";\n\n // Http2Stream\n\n export interface StreamPriorityOptions {\n exclusive?: boolean;\n parent?: number;\n weight?: number;\n silent?: boolean;\n }\n\n export interface StreamState {\n localWindowSize?: number;\n state?: number;\n streamLocalClose?: number;\n streamRemoteClose?: number;\n sumDependencyWeight?: number;\n weight?: number;\n }\n\n export interface ServerStreamResponseOptions {\n endStream?: boolean;\n getTrailers?: (trailers: OutgoingHttpHeaders) => void;\n }\n\n export interface StatOptions {\n offset: number;\n length: number;\n }\n\n export interface ServerStreamFileResponseOptions {\n statCheck?: (stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions) => void | boolean;\n getTrailers?: (trailers: OutgoingHttpHeaders) => void;\n offset?: number;\n length?: number;\n }\n\n export interface ServerStreamFileResponseOptionsWithError extends ServerStreamFileResponseOptions {\n onError?: (err: NodeJS.ErrnoException) => void;\n }\n\n export interface Http2Stream extends stream.Duplex {\n readonly aborted: boolean;\n readonly destroyed: boolean;\n priority(options: StreamPriorityOptions): void;\n readonly rstCode: number;\n rstStream(code: number): void;\n rstWithNoError(): void;\n rstWithProtocolError(): void;\n rstWithCancel(): void;\n rstWithRefuse(): void;\n rstWithInternalError(): void;\n readonly session: Http2Session;\n setTimeout(msecs: number, callback?: () => void): void;\n readonly state: StreamState;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "aborted", listener: () => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n addListener(event: "drain", listener: () => void): this;\n addListener(event: "end", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "finish", listener: () => void): this;\n addListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;\n addListener(event: "pipe", listener: (src: stream.Readable) => void): this;\n addListener(event: "unpipe", listener: (src: stream.Readable) => void): this;\n addListener(event: "streamClosed", listener: (code: number) => void): this;\n addListener(event: "timeout", listener: () => void): this;\n addListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "aborted"): boolean;\n emit(event: "close"): boolean;\n emit(event: "data", chunk: Buffer | string): boolean;\n emit(event: "drain"): boolean;\n emit(event: "end"): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "finish"): boolean;\n emit(event: "frameError", frameType: number, errorCode: number): boolean;\n emit(event: "pipe", src: stream.Readable): boolean;\n emit(event: "unpipe", src: stream.Readable): boolean;\n emit(event: "streamClosed", code: number): boolean;\n emit(event: "timeout"): boolean;\n emit(event: "trailers", trailers: IncomingHttpHeaders, flags: number): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "aborted", listener: () => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "data", listener: (chunk: Buffer | string) => void): this;\n on(event: "drain", listener: () => void): this;\n on(event: "end", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "finish", listener: () => void): this;\n on(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;\n on(event: "pipe", listener: (src: stream.Readable) => void): this;\n on(event: "unpipe", listener: (src: stream.Readable) => void): this;\n on(event: "streamClosed", listener: (code: number) => void): this;\n on(event: "timeout", listener: () => void): this;\n on(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "aborted", listener: () => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "data", listener: (chunk: Buffer | string) => void): this;\n once(event: "drain", listener: () => void): this;\n once(event: "end", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "finish", listener: () => void): this;\n once(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;\n once(event: "pipe", listener: (src: stream.Readable) => void): this;\n once(event: "unpipe", listener: (src: stream.Readable) => void): this;\n once(event: "streamClosed", listener: (code: number) => void): this;\n once(event: "timeout", listener: () => void): this;\n once(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "aborted", listener: () => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n prependListener(event: "drain", listener: () => void): this;\n prependListener(event: "end", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "finish", listener: () => void): this;\n prependListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;\n prependListener(event: "pipe", listener: (src: stream.Readable) => void): this;\n prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this;\n prependListener(event: "streamClosed", listener: (code: number) => void): this;\n prependListener(event: "timeout", listener: () => void): this;\n prependListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "aborted", listener: () => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n prependOnceListener(event: "drain", listener: () => void): this;\n prependOnceListener(event: "end", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "finish", listener: () => void): this;\n prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;\n prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this;\n prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this;\n prependOnceListener(event: "streamClosed", listener: (code: number) => void): this;\n prependOnceListener(event: "timeout", listener: () => void): this;\n prependOnceListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;\n }\n\n export interface ClientHttp2Stream extends Http2Stream {\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n addListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n addListener(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "headers", headers: IncomingHttpHeaders, flags: number): boolean;\n emit(event: "push", headers: IncomingHttpHeaders, flags: number): boolean;\n emit(event: "response", headers: IncomingHttpHeaders, flags: number): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n on(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n on(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n once(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n once(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n prependListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n prependListener(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n prependOnceListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n prependOnceListener(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n }\n\n export interface ServerHttp2Stream extends Http2Stream {\n additionalHeaders(headers: OutgoingHttpHeaders): void;\n readonly headersSent: boolean;\n readonly pushAllowed: boolean;\n pushStream(headers: OutgoingHttpHeaders, callback?: (pushStream: ServerHttp2Stream) => void): void;\n pushStream(headers: OutgoingHttpHeaders, options?: StreamPriorityOptions, callback?: (pushStream: ServerHttp2Stream) => void): void;\n respond(headers?: OutgoingHttpHeaders, options?: ServerStreamResponseOptions): void;\n respondWithFD(fd: number, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptions): void;\n respondWithFile(path: string, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptionsWithError): void;\n }\n\n // Http2Session\n\n export interface Settings {\n headerTableSize?: number;\n enablePush?: boolean;\n initialWindowSize?: number;\n maxFrameSize?: number;\n maxConcurrentStreams?: number;\n maxHeaderListSize?: number;\n }\n\n export interface ClientSessionRequestOptions {\n endStream?: boolean;\n exclusive?: boolean;\n parent?: number;\n weight?: number;\n getTrailers?: (trailers: OutgoingHttpHeaders, flags: number) => void;\n }\n\n export interface SessionShutdownOptions {\n graceful?: boolean;\n errorCode?: number;\n lastStreamID?: number;\n opaqueData?: Buffer | Uint8Array;\n }\n\n export interface SessionState {\n effectiveLocalWindowSize?: number;\n effectiveRecvDataLength?: number;\n nextStreamID?: number;\n localWindowSize?: number;\n lastProcStreamID?: number;\n remoteWindowSize?: number;\n outboundQueueSize?: number;\n deflateDynamicTableSize?: number;\n inflateDynamicTableSize?: number;\n }\n\n export interface Http2Session extends events.EventEmitter {\n destroy(): void;\n readonly destroyed: boolean;\n readonly localSettings: Settings;\n readonly pendingSettingsAck: boolean;\n readonly remoteSettings: Settings;\n rstStream(stream: Http2Stream, code?: number): void;\n setTimeout(msecs: number, callback?: () => void): void;\n shutdown(callback?: () => void): void;\n shutdown(options: SessionShutdownOptions, callback?: () => void): void;\n readonly socket: net.Socket | tls.TLSSocket;\n readonly state: SessionState;\n priority(stream: Http2Stream, options: StreamPriorityOptions): void;\n settings(settings: Settings): void;\n readonly type: number;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;\n addListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;\n addListener(event: "localSettings", listener: (settings: Settings) => void): this;\n addListener(event: "remoteSettings", listener: (settings: Settings) => void): this;\n addListener(event: "socketError", listener: (err: Error) => void): this;\n addListener(event: "timeout", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close"): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "frameError", frameType: number, errorCode: number, streamID: number): boolean;\n emit(event: "goaway", errorCode: number, lastStreamID: number, opaqueData: Buffer): boolean;\n emit(event: "localSettings", settings: Settings): boolean;\n emit(event: "remoteSettings", settings: Settings): boolean;\n emit(event: "socketError", err: Error): boolean;\n emit(event: "timeout"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;\n on(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;\n on(event: "localSettings", listener: (settings: Settings) => void): this;\n on(event: "remoteSettings", listener: (settings: Settings) => void): this;\n on(event: "socketError", listener: (err: Error) => void): this;\n on(event: "timeout", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;\n once(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;\n once(event: "localSettings", listener: (settings: Settings) => void): this;\n once(event: "remoteSettings", listener: (settings: Settings) => void): this;\n once(event: "socketError", listener: (err: Error) => void): this;\n once(event: "timeout", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;\n prependListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;\n prependListener(event: "localSettings", listener: (settings: Settings) => void): this;\n prependListener(event: "remoteSettings", listener: (settings: Settings) => void): this;\n prependListener(event: "socketError", listener: (err: Error) => void): this;\n prependListener(event: "timeout", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;\n prependOnceListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;\n prependOnceListener(event: "localSettings", listener: (settings: Settings) => void): this;\n prependOnceListener(event: "remoteSettings", listener: (settings: Settings) => void): this;\n prependOnceListener(event: "socketError", listener: (err: Error) => void): this;\n prependOnceListener(event: "timeout", listener: () => void): this;\n }\n\n export interface ClientHttp2Session extends Http2Session {\n request(headers?: OutgoingHttpHeaders, options?: ClientSessionRequestOptions): ClientHttp2Stream;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n addListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "connect", session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket): boolean;\n emit(event: "stream", stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n on(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n once(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n prependListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n prependOnceListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n }\n\n export interface ServerHttp2Session extends Http2Session {\n readonly server: Http2Server | Http2SecureServer;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "connect", session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket): boolean;\n emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n }\n\n // Http2Server\n\n export interface SessionOptions {\n maxDeflateDynamicTableSize?: number;\n maxReservedRemoteStreams?: number;\n maxSendHeaderBlockLength?: number;\n paddingStrategy?: number;\n peerMaxConcurrentStreams?: number;\n selectPadding?: (frameLen: number, maxFrameLen: number) => number;\n settings?: Settings;\n }\n\n export type ClientSessionOptions = SessionOptions;\n export type ServerSessionOptions = SessionOptions;\n\n export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions { }\n export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions { }\n\n export interface ServerOptions extends ServerSessionOptions {\n allowHTTP1?: boolean;\n }\n\n export interface SecureServerOptions extends SecureServerSessionOptions {\n allowHTTP1?: boolean;\n }\n\n export interface Http2Server extends net.Server {\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n addListener(event: "sessionError", listener: (err: Error) => void): this;\n addListener(event: "socketError", listener: (err: Error) => void): this;\n addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n addListener(event: "timeout", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean;\n emit(event: "sessionError", err: Error): boolean;\n emit(event: "socketError", err: Error): boolean;\n emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;\n emit(event: "timeout"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n on(event: "sessionError", listener: (err: Error) => void): this;\n on(event: "socketError", listener: (err: Error) => void): this;\n on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n on(event: "timeout", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n once(event: "sessionError", listener: (err: Error) => void): this;\n once(event: "socketError", listener: (err: Error) => void): this;\n once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n once(event: "timeout", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n prependListener(event: "sessionError", listener: (err: Error) => void): this;\n prependListener(event: "socketError", listener: (err: Error) => void): this;\n prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n prependListener(event: "timeout", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n prependOnceListener(event: "sessionError", listener: (err: Error) => void): this;\n prependOnceListener(event: "socketError", listener: (err: Error) => void): this;\n prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n prependOnceListener(event: "timeout", listener: () => void): this;\n }\n\n export interface Http2SecureServer extends tls.Server {\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n addListener(event: "sessionError", listener: (err: Error) => void): this;\n addListener(event: "socketError", listener: (err: Error) => void): this;\n addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n addListener(event: "timeout", listener: () => void): this;\n addListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean;\n emit(event: "sessionError", err: Error): boolean;\n emit(event: "socketError", err: Error): boolean;\n emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;\n emit(event: "timeout"): boolean;\n emit(event: "unknownProtocol", socket: tls.TLSSocket): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n on(event: "sessionError", listener: (err: Error) => void): this;\n on(event: "socketError", listener: (err: Error) => void): this;\n on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n on(event: "timeout", listener: () => void): this;\n on(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n once(event: "sessionError", listener: (err: Error) => void): this;\n once(event: "socketError", listener: (err: Error) => void): this;\n once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n once(event: "timeout", listener: () => void): this;\n once(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n prependListener(event: "sessionError", listener: (err: Error) => void): this;\n prependListener(event: "socketError", listener: (err: Error) => void): this;\n prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n prependListener(event: "timeout", listener: () => void): this;\n prependListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n prependOnceListener(event: "sessionError", listener: (err: Error) => void): this;\n prependOnceListener(event: "socketError", listener: (err: Error) => void): this;\n prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n prependOnceListener(event: "timeout", listener: () => void): this;\n prependOnceListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;\n }\n\n export interface Http2ServerRequest extends stream.Readable {\n headers: IncomingHttpHeaders;\n httpVersion: string;\n method: string;\n rawHeaders: string[];\n rawTrailers: string[];\n setTimeout(msecs: number, callback?: () => void): void;\n socket: net.Socket | tls.TLSSocket;\n stream: ServerHttp2Stream;\n trailers: IncomingHttpHeaders;\n url: string;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "aborted", hadError: boolean, code: number): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n }\n\n export interface Http2ServerResponse extends events.EventEmitter {\n addTrailers(trailers: OutgoingHttpHeaders): void;\n connection: net.Socket | tls.TLSSocket;\n end(callback?: () => void): void;\n end(data?: string | Buffer, callback?: () => void): void;\n end(data?: string | Buffer, encoding?: string, callback?: () => void): void;\n readonly finished: boolean;\n getHeader(name: string): string;\n getHeaderNames(): string[];\n getHeaders(): OutgoingHttpHeaders;\n hasHeader(name: string): boolean;\n readonly headersSent: boolean;\n removeHeader(name: string): void;\n sendDate: boolean;\n setHeader(name: string, value: number | string | string[]): void;\n setTimeout(msecs: number, callback?: () => void): void;\n socket: net.Socket | tls.TLSSocket;\n statusCode: number;\n statusMessage: \'\';\n stream: ServerHttp2Stream;\n write(chunk: string | Buffer, callback?: (err: Error) => void): boolean;\n write(chunk: string | Buffer, encoding?: string, callback?: (err: Error) => void): boolean;\n writeContinue(): void;\n writeHead(statusCode: number, headers?: OutgoingHttpHeaders): void;\n writeHead(statusCode: number, statusMessage?: string, headers?: OutgoingHttpHeaders): void;\n createPushResponse(headers: OutgoingHttpHeaders, callback: (err: Error | null, res: Http2ServerResponse) => void): void;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "drain", listener: () => void): this;\n addListener(event: "error", listener: (error: Error) => void): this;\n addListener(event: "finish", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "aborted", hadError: boolean, code: number): boolean;\n emit(event: "close"): boolean;\n emit(event: "drain"): boolean;\n emit(event: "error", error: Error): boolean;\n emit(event: "finish"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "drain", listener: () => void): this;\n on(event: "error", listener: (error: Error) => void): this;\n on(event: "finish", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "drain", listener: () => void): this;\n once(event: "error", listener: (error: Error) => void): this;\n once(event: "finish", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "drain", listener: () => void): this;\n prependListener(event: "error", listener: (error: Error) => void): this;\n prependListener(event: "finish", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "drain", listener: () => void): this;\n prependOnceListener(event: "error", listener: (error: Error) => void): this;\n prependOnceListener(event: "finish", listener: () => void): this;\n }\n\n // Public API\n\n export namespace constants {\n export const NGHTTP2_SESSION_SERVER: number;\n export const NGHTTP2_SESSION_CLIENT: number;\n export const NGHTTP2_STREAM_STATE_IDLE: number;\n export const NGHTTP2_STREAM_STATE_OPEN: number;\n export const NGHTTP2_STREAM_STATE_RESERVED_LOCAL: number;\n export const NGHTTP2_STREAM_STATE_RESERVED_REMOTE: number;\n export const NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: number;\n export const NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: number;\n export const NGHTTP2_STREAM_STATE_CLOSED: number;\n export const NGHTTP2_NO_ERROR: number;\n export const NGHTTP2_PROTOCOL_ERROR: number;\n export const NGHTTP2_INTERNAL_ERROR: number;\n export const NGHTTP2_FLOW_CONTROL_ERROR: number;\n export const NGHTTP2_SETTINGS_TIMEOUT: number;\n export const NGHTTP2_STREAM_CLOSED: number;\n export const NGHTTP2_FRAME_SIZE_ERROR: number;\n export const NGHTTP2_REFUSED_STREAM: number;\n export const NGHTTP2_CANCEL: number;\n export const NGHTTP2_COMPRESSION_ERROR: number;\n export const NGHTTP2_CONNECT_ERROR: number;\n export const NGHTTP2_ENHANCE_YOUR_CALM: number;\n export const NGHTTP2_INADEQUATE_SECURITY: number;\n export const NGHTTP2_HTTP_1_1_REQUIRED: number;\n export const NGHTTP2_ERR_FRAME_SIZE_ERROR: number;\n export const NGHTTP2_FLAG_NONE: number;\n export const NGHTTP2_FLAG_END_STREAM: number;\n export const NGHTTP2_FLAG_END_HEADERS: number;\n export const NGHTTP2_FLAG_ACK: number;\n export const NGHTTP2_FLAG_PADDED: number;\n export const NGHTTP2_FLAG_PRIORITY: number;\n export const DEFAULT_SETTINGS_HEADER_TABLE_SIZE: number;\n export const DEFAULT_SETTINGS_ENABLE_PUSH: number;\n export const DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: number;\n export const DEFAULT_SETTINGS_MAX_FRAME_SIZE: number;\n export const MAX_MAX_FRAME_SIZE: number;\n export const MIN_MAX_FRAME_SIZE: number;\n export const MAX_INITIAL_WINDOW_SIZE: number;\n export const NGHTTP2_DEFAULT_WEIGHT: number;\n export const NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: number;\n export const NGHTTP2_SETTINGS_ENABLE_PUSH: number;\n export const NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: number;\n export const NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: number;\n export const NGHTTP2_SETTINGS_MAX_FRAME_SIZE: number;\n export const NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: number;\n export const PADDING_STRATEGY_NONE: number;\n export const PADDING_STRATEGY_MAX: number;\n export const PADDING_STRATEGY_CALLBACK: number;\n export const HTTP2_HEADER_STATUS: string;\n export const HTTP2_HEADER_METHOD: string;\n export const HTTP2_HEADER_AUTHORITY: string;\n export const HTTP2_HEADER_SCHEME: string;\n export const HTTP2_HEADER_PATH: string;\n export const HTTP2_HEADER_ACCEPT_CHARSET: string;\n export const HTTP2_HEADER_ACCEPT_ENCODING: string;\n export const HTTP2_HEADER_ACCEPT_LANGUAGE: string;\n export const HTTP2_HEADER_ACCEPT_RANGES: string;\n export const HTTP2_HEADER_ACCEPT: string;\n export const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: string;\n export const HTTP2_HEADER_AGE: string;\n export const HTTP2_HEADER_ALLOW: string;\n export const HTTP2_HEADER_AUTHORIZATION: string;\n export const HTTP2_HEADER_CACHE_CONTROL: string;\n export const HTTP2_HEADER_CONNECTION: string;\n export const HTTP2_HEADER_CONTENT_DISPOSITION: string;\n export const HTTP2_HEADER_CONTENT_ENCODING: string;\n export const HTTP2_HEADER_CONTENT_LANGUAGE: string;\n export const HTTP2_HEADER_CONTENT_LENGTH: string;\n export const HTTP2_HEADER_CONTENT_LOCATION: string;\n export const HTTP2_HEADER_CONTENT_MD5: string;\n export const HTTP2_HEADER_CONTENT_RANGE: string;\n export const HTTP2_HEADER_CONTENT_TYPE: string;\n export const HTTP2_HEADER_COOKIE: string;\n export const HTTP2_HEADER_DATE: string;\n export const HTTP2_HEADER_ETAG: string;\n export const HTTP2_HEADER_EXPECT: string;\n export const HTTP2_HEADER_EXPIRES: string;\n export const HTTP2_HEADER_FROM: string;\n export const HTTP2_HEADER_HOST: string;\n export const HTTP2_HEADER_IF_MATCH: string;\n export const HTTP2_HEADER_IF_MODIFIED_SINCE: string;\n export const HTTP2_HEADER_IF_NONE_MATCH: string;\n export const HTTP2_HEADER_IF_RANGE: string;\n export const HTTP2_HEADER_IF_UNMODIFIED_SINCE: string;\n export const HTTP2_HEADER_LAST_MODIFIED: string;\n export const HTTP2_HEADER_LINK: string;\n export const HTTP2_HEADER_LOCATION: string;\n export const HTTP2_HEADER_MAX_FORWARDS: string;\n export const HTTP2_HEADER_PREFER: string;\n export const HTTP2_HEADER_PROXY_AUTHENTICATE: string;\n export const HTTP2_HEADER_PROXY_AUTHORIZATION: string;\n export const HTTP2_HEADER_RANGE: string;\n export const HTTP2_HEADER_REFERER: string;\n export const HTTP2_HEADER_REFRESH: string;\n export const HTTP2_HEADER_RETRY_AFTER: string;\n export const HTTP2_HEADER_SERVER: string;\n export const HTTP2_HEADER_SET_COOKIE: string;\n export const HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: string;\n export const HTTP2_HEADER_TRANSFER_ENCODING: string;\n export const HTTP2_HEADER_TE: string;\n export const HTTP2_HEADER_UPGRADE: string;\n export const HTTP2_HEADER_USER_AGENT: string;\n export const HTTP2_HEADER_VARY: string;\n export const HTTP2_HEADER_VIA: string;\n export const HTTP2_HEADER_WWW_AUTHENTICATE: string;\n export const HTTP2_HEADER_HTTP2_SETTINGS: string;\n export const HTTP2_HEADER_KEEP_ALIVE: string;\n export const HTTP2_HEADER_PROXY_CONNECTION: string;\n export const HTTP2_METHOD_ACL: string;\n export const HTTP2_METHOD_BASELINE_CONTROL: string;\n export const HTTP2_METHOD_BIND: string;\n export const HTTP2_METHOD_CHECKIN: string;\n export const HTTP2_METHOD_CHECKOUT: string;\n export const HTTP2_METHOD_CONNECT: string;\n export const HTTP2_METHOD_COPY: string;\n export const HTTP2_METHOD_DELETE: string;\n export const HTTP2_METHOD_GET: string;\n export const HTTP2_METHOD_HEAD: string;\n export const HTTP2_METHOD_LABEL: string;\n export const HTTP2_METHOD_LINK: string;\n export const HTTP2_METHOD_LOCK: string;\n export const HTTP2_METHOD_MERGE: string;\n export const HTTP2_METHOD_MKACTIVITY: string;\n export const HTTP2_METHOD_MKCALENDAR: string;\n export const HTTP2_METHOD_MKCOL: string;\n export const HTTP2_METHOD_MKREDIRECTREF: string;\n export const HTTP2_METHOD_MKWORKSPACE: string;\n export const HTTP2_METHOD_MOVE: string;\n export const HTTP2_METHOD_OPTIONS: string;\n export const HTTP2_METHOD_ORDERPATCH: string;\n export const HTTP2_METHOD_PATCH: string;\n export const HTTP2_METHOD_POST: string;\n export const HTTP2_METHOD_PRI: string;\n export const HTTP2_METHOD_PROPFIND: string;\n export const HTTP2_METHOD_PROPPATCH: string;\n export const HTTP2_METHOD_PUT: string;\n export const HTTP2_METHOD_REBIND: string;\n export const HTTP2_METHOD_REPORT: string;\n export const HTTP2_METHOD_SEARCH: string;\n export const HTTP2_METHOD_TRACE: string;\n export const HTTP2_METHOD_UNBIND: string;\n export const HTTP2_METHOD_UNCHECKOUT: string;\n export const HTTP2_METHOD_UNLINK: string;\n export const HTTP2_METHOD_UNLOCK: string;\n export const HTTP2_METHOD_UPDATE: string;\n export const HTTP2_METHOD_UPDATEREDIRECTREF: string;\n export const HTTP2_METHOD_VERSION_CONTROL: string;\n export const HTTP_STATUS_CONTINUE: number;\n export const HTTP_STATUS_SWITCHING_PROTOCOLS: number;\n export const HTTP_STATUS_PROCESSING: number;\n export const HTTP_STATUS_OK: number;\n export const HTTP_STATUS_CREATED: number;\n export const HTTP_STATUS_ACCEPTED: number;\n export const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: number;\n export const HTTP_STATUS_NO_CONTENT: number;\n export const HTTP_STATUS_RESET_CONTENT: number;\n export const HTTP_STATUS_PARTIAL_CONTENT: number;\n export const HTTP_STATUS_MULTI_STATUS: number;\n export const HTTP_STATUS_ALREADY_REPORTED: number;\n export const HTTP_STATUS_IM_USED: number;\n export const HTTP_STATUS_MULTIPLE_CHOICES: number;\n export const HTTP_STATUS_MOVED_PERMANENTLY: number;\n export const HTTP_STATUS_FOUND: number;\n export const HTTP_STATUS_SEE_OTHER: number;\n export const HTTP_STATUS_NOT_MODIFIED: number;\n export const HTTP_STATUS_USE_PROXY: number;\n export const HTTP_STATUS_TEMPORARY_REDIRECT: number;\n export const HTTP_STATUS_PERMANENT_REDIRECT: number;\n export const HTTP_STATUS_BAD_REQUEST: number;\n export const HTTP_STATUS_UNAUTHORIZED: number;\n export const HTTP_STATUS_PAYMENT_REQUIRED: number;\n export const HTTP_STATUS_FORBIDDEN: number;\n export const HTTP_STATUS_NOT_FOUND: number;\n export const HTTP_STATUS_METHOD_NOT_ALLOWED: number;\n export const HTTP_STATUS_NOT_ACCEPTABLE: number;\n export const HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: number;\n export const HTTP_STATUS_REQUEST_TIMEOUT: number;\n export const HTTP_STATUS_CONFLICT: number;\n export const HTTP_STATUS_GONE: number;\n export const HTTP_STATUS_LENGTH_REQUIRED: number;\n export const HTTP_STATUS_PRECONDITION_FAILED: number;\n export const HTTP_STATUS_PAYLOAD_TOO_LARGE: number;\n export const HTTP_STATUS_URI_TOO_LONG: number;\n export const HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: number;\n export const HTTP_STATUS_RANGE_NOT_SATISFIABLE: number;\n export const HTTP_STATUS_EXPECTATION_FAILED: number;\n export const HTTP_STATUS_TEAPOT: number;\n export const HTTP_STATUS_MISDIRECTED_REQUEST: number;\n export const HTTP_STATUS_UNPROCESSABLE_ENTITY: number;\n export const HTTP_STATUS_LOCKED: number;\n export const HTTP_STATUS_FAILED_DEPENDENCY: number;\n export const HTTP_STATUS_UNORDERED_COLLECTION: number;\n export const HTTP_STATUS_UPGRADE_REQUIRED: number;\n export const HTTP_STATUS_PRECONDITION_REQUIRED: number;\n export const HTTP_STATUS_TOO_MANY_REQUESTS: number;\n export const HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: number;\n export const HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: number;\n export const HTTP_STATUS_INTERNAL_SERVER_ERROR: number;\n export const HTTP_STATUS_NOT_IMPLEMENTED: number;\n export const HTTP_STATUS_BAD_GATEWAY: number;\n export const HTTP_STATUS_SERVICE_UNAVAILABLE: number;\n export const HTTP_STATUS_GATEWAY_TIMEOUT: number;\n export const HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: number;\n export const HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: number;\n export const HTTP_STATUS_INSUFFICIENT_STORAGE: number;\n export const HTTP_STATUS_LOOP_DETECTED: number;\n export const HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: number;\n export const HTTP_STATUS_NOT_EXTENDED: number;\n export const HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: number;\n }\n\n export function getDefaultSettings(): Settings;\n export function getPackedSettings(settings: Settings): Settings;\n export function getUnpackedSettings(buf: Buffer | Uint8Array): Settings;\n\n export function createServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server;\n export function createServer(options: ServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server;\n\n export function createSecureServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer;\n export function createSecureServer(options: SecureServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer;\n\n export function connect(authority: string | url.URL, listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session;\n export function connect(authority: string | url.URL, options?: ClientSessionOptions | SecureClientSessionOptions, listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session;\n}\n\ndeclare module "perf_hooks" {\n export interface PerformanceEntry {\n /**\n * The total number of milliseconds elapsed for this entry.\n * This value will not be meaningful for all Performance Entry types.\n */\n readonly duration: number;\n\n /**\n * The name of the performance entry.\n */\n readonly name: string;\n\n /**\n * The high resolution millisecond timestamp marking the starting time of the Performance Entry.\n */\n readonly startTime: number;\n\n /**\n * The type of the performance entry.\n * Currently it may be one of: \'node\', \'mark\', \'measure\', \'gc\', or \'function\'.\n */\n readonly entryType: string;\n\n /**\n * When performanceEntry.entryType is equal to \'gc\', the performance.kind property identifies\n * the type of garbage collection operation that occurred.\n * The value may be one of perf_hooks.constants.\n */\n readonly kind?: number;\n }\n\n export interface PerformanceNodeTiming extends PerformanceEntry {\n /**\n * The high resolution millisecond timestamp at which the Node.js process completed bootstrap.\n */\n readonly bootstrapComplete: number;\n\n /**\n * The high resolution millisecond timestamp at which cluster processing ended.\n */\n readonly clusterSetupEnd: number;\n\n /**\n * The high resolution millisecond timestamp at which cluster processing started.\n */\n readonly clusterSetupStart: number;\n\n /**\n * The high resolution millisecond timestamp at which the Node.js event loop exited.\n */\n readonly loopExit: number;\n\n /**\n * The high resolution millisecond timestamp at which the Node.js event loop started.\n */\n readonly loopStart: number;\n\n /**\n * The high resolution millisecond timestamp at which main module load ended.\n */\n readonly moduleLoadEnd: number;\n\n /**\n * The high resolution millisecond timestamp at which main module load started.\n */\n readonly moduleLoadStart: number;\n\n /**\n * The high resolution millisecond timestamp at which the Node.js process was initialized.\n */\n readonly nodeStart: number;\n\n /**\n * The high resolution millisecond timestamp at which preload module load ended.\n */\n readonly preloadModuleLoadEnd: number;\n\n /**\n * The high resolution millisecond timestamp at which preload module load started.\n */\n readonly preloadModuleLoadStart: number;\n\n /**\n * The high resolution millisecond timestamp at which third_party_main processing ended.\n */\n readonly thirdPartyMainEnd: number;\n\n /**\n * The high resolution millisecond timestamp at which third_party_main processing started.\n */\n readonly thirdPartyMainStart: number;\n\n /**\n * The high resolution millisecond timestamp at which the V8 platform was initialized.\n */\n readonly v8Start: number;\n }\n\n export interface Performance {\n /**\n * If name is not provided, removes all PerformanceFunction objects from the Performance Timeline.\n * If name is provided, removes entries with name.\n * @param name\n */\n clearFunctions(name?: string): void;\n\n /**\n * If name is not provided, removes all PerformanceMark objects from the Performance Timeline.\n * If name is provided, removes only the named mark.\n * @param name\n */\n clearMarks(name?: string): void;\n\n /**\n * If name is not provided, removes all PerformanceMeasure objects from the Performance Timeline.\n * If name is provided, removes only objects whose performanceEntry.name matches name.\n */\n clearMeasures(name?: string): void;\n\n /**\n * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime.\n * @return list of all PerformanceEntry objects\n */\n getEntries(): PerformanceEntry[];\n\n /**\n * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime\n * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type.\n * @param name\n * @param type\n * @return list of all PerformanceEntry objects\n */\n getEntriesByName(name: string, type?: string): PerformanceEntry[];\n\n /**\n * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime\n * whose performanceEntry.entryType is equal to type.\n * @param type\n * @return list of all PerformanceEntry objects\n */\n getEntriesByType(type: string): PerformanceEntry[];\n\n /**\n * Creates a new PerformanceMark entry in the Performance Timeline.\n * A PerformanceMark is a subclass of PerformanceEntry whose performanceEntry.entryType is always \'mark\',\n * and whose performanceEntry.duration is always 0.\n * Performance marks are used to mark specific significant moments in the Performance Timeline.\n * @param name\n */\n mark(name?: string): void;\n\n /**\n * Creates a new PerformanceMeasure entry in the Performance Timeline.\n * A PerformanceMeasure is a subclass of PerformanceEntry whose performanceEntry.entryType is always \'measure\',\n * and whose performanceEntry.duration measures the number of milliseconds elapsed since startMark and endMark.\n *\n * The startMark argument may identify any existing PerformanceMark in the the Performance Timeline, or may identify\n * any of the timestamp properties provided by the PerformanceNodeTiming class. If the named startMark does not exist,\n * then startMark is set to timeOrigin by default.\n *\n * The endMark argument must identify any existing PerformanceMark in the the Performance Timeline or any of the timestamp\n * properties provided by the PerformanceNodeTiming class. If the named endMark does not exist, an error will be thrown.\n * @param name\n * @param startMark\n * @param endMark\n */\n measure(name: string, startMark: string, endMark: string): void;\n\n /**\n * An instance of the PerformanceNodeTiming class that provides performance metrics for specific Node.js operational milestones.\n */\n readonly nodeTiming: PerformanceNodeTiming;\n\n /**\n * @return the current high resolution millisecond timestamp\n */\n now(): number;\n\n /**\n * The timeOrigin specifies the high resolution millisecond timestamp from which all performance metric durations are measured.\n */\n readonly timeOrigin: number;\n\n /**\n * Wraps a function within a new function that measures the running time of the wrapped function.\n * A PerformanceObserver must be subscribed to the \'function\' event type in order for the timing details to be accessed.\n * @param fn\n */\n timerify any>(fn: T): T;\n }\n\n export interface PerformanceObserverEntryList {\n /**\n * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime.\n */\n getEntries(): PerformanceEntry[];\n\n /**\n * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime\n * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type.\n */\n getEntriesByName(name: string, type?: string): PerformanceEntry[];\n\n /**\n * @return Returns a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime\n * whose performanceEntry.entryType is equal to type.\n */\n getEntriesByType(type: string): PerformanceEntry[];\n }\n\n export type PerformanceObserverCallback = (list: PerformanceObserverEntryList, observer: PerformanceObserver) => void;\n\n export class PerformanceObserver {\n constructor(callback: PerformanceObserverCallback);\n\n /**\n * Disconnects the PerformanceObserver instance from all notifications.\n */\n disconnect(): void;\n\n /**\n * Subscribes the PerformanceObserver instance to notifications of new PerformanceEntry instances identified by options.entryTypes.\n * When options.buffered is false, the callback will be invoked once for every PerformanceEntry instance.\n * Property buffered defaults to false.\n * @param options\n */\n observe(options: { entryTypes: string[], buffered?: boolean }): void;\n }\n\n export namespace constants {\n export const NODE_PERFORMANCE_GC_MAJOR: number;\n export const NODE_PERFORMANCE_GC_MINOR: number;\n export const NODE_PERFORMANCE_GC_INCREMENTAL: number;\n export const NODE_PERFORMANCE_GC_WEAKCB: number;\n }\n\n const performance: Performance;\n}\n',e)]))])))),$l(Zn(),Qn(xl(Zn(),Qn(kl(dt([new Il(16,Qn(new Ya(94,"https://github.com/fable-compiler/ts2fable"))),new Il(0,new nl(1))]),Qn(Za.createElement("span",{},"Github")))))))]));var n,t,r,o,i}(n),Za.createElement("div",{className:"page-content"},(r=dt([new Cl(0,t),new Cl(1,new nl(3))]),o=Qn(Za.createElement("span",{className:"title"},"We are getting everything ready for you")),ml(ll(r,((e,n)=>{switch(n.tag){case 0:return n.fields[0]?pl(e,n):e;case 2:return dl(e,n.fields[0]);case 3:return ul(e,n.fields[0]);case 4:return fl(e,n.fields[0]);default:return ul(e,tl(n.fields[0]))}}),"pageloader"),((e,n)=>Za.createElement("div",Ii(e,1),...n)),o)),Ol(dt([new Ll(3),new Ll(2)]),dt([Rl(Qn(new Pl(0,new Qa(0),new _l(2))),Qn(Dl(Zn(),Qn(Ml(Zn(),Qn(gl(Qn(new sl(2,Qn(new il(5,new Qa(0),new ol(0))))),Qn("Type or paste TypeScript definition")))))))),Rl(Qn(new Pl(0,new Qa(0),new _l(2))),Qn(Dl(Zn(),Qn(Ml(Zn(),Qn(gl(Qn(new sl(2,Qn(new il(5,new Qa(0),new ol(0))))),Qn("F# code"))))))))])),Ol(dt([new Ll(3),new Ll(2),new Ll(10,Qn(["style",{height:"100%"}]))]),dt([Rl(Qn(new Pl(0,new Qa(0),new _l(2))),Qn(Za.createElement(ql,{language:"typescript",onChange:e=>{n(new ld(2,e))},value:e.HtmlCode,editorDidMount:()=>{n(new ld(0))}}))),Rl(Qn(new Pl(0,new Qa(0),new _l(2))),dt([Za.createElement("div",{className:"copy-button"},Za.createElement(Kl,{value:e.FSharpCode})),Za.createElement(ql,{language:"fsharp",isReadOnly:!0,value:e.FSharpCode,editorDidMount:()=>{n(new ld(1))}})]))]))));var r,o}!function(e){!function(e,n){const t=n.init(e),r=t[0],o=new Xc(10);let i=!1,s=r;const a=A(1,n.syncDispatch,[e=>{if(i)ed(o,e);else{i=!0;let t=Ln(e);for(;null!=t;){const e=On(t);try{const t=n.update(e,s),r=t[0];n.setState(r,a),za((t=>{n.onError([hn(pn("Error in command while handling: %A"))(e),t])}),a,t[1]),s=r}catch(t){n.onError([hn(pn("Unable to process the message: %A"))(e),t])}t=Qc(o)}i=!1}}]);n.setState(r,a),za((e=>{n.onError(["Error intitializing:",e])}),a,pt(dt([(()=>{try{return n.subscribe(r)}catch(e){return n.onError(["Unable to subscribe:",e]),Ka()}})(),t[1]])))}(void 0,e)}(("elmish-app",td=function(e,n,t){return new nd((function(e){return[new ad("","",new sd(0),new sd(0)),Ka()]}),((e,n)=>function(e,n){switch(e.tag){case 0:return[new ad(n.HtmlCode,n.FSharpCode,new sd(1),n.FSharpEditorState),Ka()];case 1:return[new ad(n.HtmlCode,n.FSharpCode,n.HtmlEditorState,new sd(1)),Ka()];case 3:return[new ad(n.HtmlCode,cd(n.HtmlCode),n.HtmlEditorState,n.FSharpEditorState),Ka()];default:return[new ad(e.fields[0],n.FSharpCode,n.HtmlEditorState,n.FSharpEditorState),Va(new ld(3))]}}(e,n)),(e=>Ka()),t,((e,n)=>{t(e,n)}),(e=>{var n,t;n=e[0],t=e[1],console.error(Ln(n),t)}),C(2,(e=>e)))}(0,0,((e,n)=>ud(e,n))),function(e,n,t){let r;return function(e,n){return new nd(n.init,n.update,n.subscribe,n.view,e,n.onError,n.syncDispatch)}(((o,i)=>{null!=r&&window.cancelAnimationFrame(r),r=window.requestAnimationFrame((r=>{rd.render(e(((e,n)=>e===n),C(2,function(e){return function(e,n){if(null==n||1===n.length)return n;if(k in n)return n.__CURRIED__;switch(e){case 2:return e=>t=>n(e,t);case 3:return e=>t=>r=>n(e,t,r);case 4:return e=>t=>r=>o=>n(e,t,r,o);case 5:return e=>t=>r=>o=>i=>n(e,t,r,o,i);case 6:return e=>t=>r=>o=>i=>s=>n(e,t,r,o,i,s);case 7:return e=>t=>r=>o=>i=>s=>a=>n(e,t,r,o,i,s,a);case 8:return e=>t=>r=>o=>i=>s=>a=>l=>n(e,t,r,o,i,s,a,l);default:throw new Error("Currying to more than 8-arity is not supported: "+e)}}(2,e.view)}(t)),o,i),document.getElementById(n))}))}),t)}(((e,n,t,r)=>function(e,n,t,r){return Za.createElement(id,new od(t,(()=>n(t,r)),e))}(e,n,t,r)),"elmish-app",td)))},9973:()=>{},3411:e=>{function n(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}n.keys=()=>[],n.resolve=n,n.id=3411,e.exports=n},2370:()=>{},2183:()=>{},3024:()=>{},2715:()=>{},3611:()=>{},8353:()=>{},3454:()=>{}},t={};function r(e){var o=t[e];if(void 0!==o)return o.exports;var i=t[e]={exports:{}};return n[e].call(i.exports,i,i.exports,r),i.exports}r.m=n,e=[],r.O=(n,t,o,i)=>{if(!t){var s=1/0;for(c=0;c=i)&&Object.keys(r.O).every((e=>r.O[e](t[l])))?t.splice(l--,1):(a=!1,i0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[t,o,i]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={143:0};r.O.j=n=>0===e[n];var n=(n,t)=>{var o,i,[s,a,l]=t,c=0;for(o in a)r.o(a,o)&&(r.m[o]=a[o]);for(l&&l(r),n&&n(t);cr(8578))),r.O(void 0,[736],(()=>r(4932)));var o=r.O(void 0,[736],(()=>r(9973)));o=r.O(o)})(); \ No newline at end of file diff --git a/app.dba494e49ba159b467e2.js b/app.dba494e49ba159b467e2.js deleted file mode 100644 index 81b2d4d..0000000 --- a/app.dba494e49ba159b467e2.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{var e,n={4932:(e,n,t)=>{"use strict";function r(e){return Array.isArray(e)||ArrayBuffer.isView(e)}function o(e){return"function"==typeof e.GetHashCode}function i(e,n){return Object.getPrototypeOf(e).constructor===Object.getPrototypeOf(n).constructor}class s{constructor(e){this.iter=e}"System.Collections.Generic.IEnumerator`1.get_Current"(){return this.current}"System.Collections.IEnumerator.get_Current"(){return this.current}"System.Collections.IEnumerator.MoveNext"(){const e=this.iter.next();return this.current=e.value,!e.done}"System.Collections.IEnumerator.Reset"(){throw new Error("JS iterators cannot be reset")}Dispose(){}}function a(e){return"function"==typeof e.GetEnumerator?e.GetEnumerator():new s(e[Symbol.iterator]())}function l(e){return{[Symbol.iterator](){return this},next(){const n=e["System.Collections.IEnumerator.MoveNext"]();return{done:!n,value:n?e["System.Collections.IEnumerator.get_Current"]():void 0}}}}class c{constructor(e){this.factory=e,this.isValueCreated=!1}get Value(){return this.isValueCreated||(this.createdValue=this.factory(),this.isValueCreated=!0),this.createdValue}get IsValueCreated(){return this.isValueCreated}}function d(e,n){let t=e.toString(10);for(;t.length(e<<5)+e^n))}function b(e){if(null==e)return 0;switch(typeof e){case"boolean":return e?1:0;case"number":return h(e);case"string":return m(e);default:return o(e)?e.GetHashCode():r(e)?function(e){const n=e.length,t=new Array(n);for(let r=0;rb(e)))):h(f.id(e))}}function v(e){return null==e?0:o(e)?e.GetHashCode():h(f.id(e))}function y(e,n,t){if(null==e)return null==n;if(null==n)return!1;if(e.length!==n.length)return!1;for(let r=0;r0?n:t}f.idMap=new WeakMap,f.count=0;const k="__CURRIED__";function C(e,n){if(null==n||n.length>1)return n;let t;switch(e){case 2:t=(e,t)=>n(e)(t);break;case 3:t=(e,t,r)=>n(e)(t)(r);break;case 4:t=(e,t,r,o)=>n(e)(t)(r)(o);break;case 5:t=(e,t,r,o,i)=>n(e)(t)(r)(o)(i);break;case 6:t=(e,t,r,o,i,s)=>n(e)(t)(r)(o)(i)(s);break;case 7:t=(e,t,r,o,i,s,a)=>n(e)(t)(r)(o)(i)(s)(a);break;case 8:t=(e,t,r,o,i,s,a,l)=>n(e)(t)(r)(o)(i)(s)(a)(l);break;default:throw new Error("Uncurrying to more than 8-arity is not supported: "+e)}return t.__CURRIED__=n,t}function A(e,n,t){if(null!=n){if(k in n){n=n.__CURRIED__;for(let e=0;en.apply(void 0,t.concat([e]));case 2:return e=>r=>n.apply(void 0,t.concat([e,r]));case 3:return e=>r=>o=>n.apply(void 0,t.concat([e,r,o]));case 4:return e=>r=>o=>i=>n.apply(void 0,t.concat([e,r,o,i]));case 5:return e=>r=>o=>i=>s=>n.apply(void 0,t.concat([e,r,o,i,s]));case 6:return e=>r=>o=>i=>s=>a=>n.apply(void 0,t.concat([e,r,o,i,s,a]));case 7:return e=>r=>o=>i=>s=>a=>l=>n.apply(void 0,t.concat([e,r,o,i,s,a,l]));case 8:return e=>r=>o=>i=>s=>a=>l=>c=>n.apply(void 0,t.concat([e,r,o,i,s,a,l,c]));default:throw new Error("Partially applying to more than 8-arity is not supported: "+e)}}}function L(e,n=0){if(null!=e&&"object"==typeof e){if("function"==typeof e.toString)return e.toString();if(Symbol.iterator in e)return function(e){let n=0,t="[";for(const r of e){if(0===n)t+=L(r);else{if(100===n){t+="; ...";break}t+="; "+L(r)}n++}return t+"]"}(e);{const t=Object.getPrototypeOf(e).constructor;return t===Object&&n<10?"{ "+Object.entries(e).map((([e,t])=>e+" = "+L(t,n+1))).join("\n ")+" }":t.name}}return String(e)}class O{get name(){return this.cases()[this.tag]}toJSON(){return 0===this.fields.length?this.name:[this.name].concat(this.fields)}toString(){return function(e,n){if(0===n.length)return e;{let t="",r=!0;return 1===n.length?(t=L(n[0]),r=t.indexOf(" ")>=0):t=n.map((e=>L(e))).join(", "),e+(r?" (":" ")+t+(r?")":"")}}(this.name,this.fields)}GetHashCode(){const e=this.fields.map((e=>b(e)));return e.splice(0,0,h(this.tag)),g(e)}Equals(e){return this===e||!!i(this,e)&&this.tag===e.tag&&x(this.fields,e.fields)}CompareTo(e){return this===e?0:i(this,e)?this.tag===e.tag?w(this.fields,e.fields):this.tage+" = "+L(n))).join("\n ")+" }"}(this)}GetHashCode(){return function(e){return g(Object.values(e).map((e=>b(e))))}(this)}Equals(e){return function(e,n){if(e===n)return!0;if(i(e,n)){const t=Object.keys(e);for(let r=0;re,this.setter=n=>{e=n})}get contents(){return this.getter()}set contents(e){this.setter(e)}}class N{constructor(e,n,t,r){this.declaringType=e,this.tag=n,this.name=t,this.fields=r}}class R{constructor(e,n,t,r,o,i,s){this.fullname=e,this.generics=n,this.construct=t,this.parent=r,this.fields=o,this.cases=i,this.enumCases=s}toString(){return q(this)}GetHashCode(){return M(this)}Equals(e){return H(this,e)}}function D(e){return null!=e.generics?e.generics:[]}function M(e){return g([m(e.fullname),...D(e).map(M)])}function H(e,n){return""===e.fullname?""===n.fullname&&y(z(e),z(n),(([e,n],[t,r])=>e===t&&H(n,r))):e.fullname===n.fullname&&y(D(e),D(n),H)}function F(e,n,t,r){return new R(e,n,t,void 0,r)}function U(e,n,t,r){const o=new R(e,n,t,void 0,void 0,(()=>{const e=t.prototype.cases();return r().map(((n,t)=>new N(o,t,e[t],n)))}));return o}function B(e){return new R("Microsoft.FSharp.Core.FSharpOption`1",[e])}function j(e){return new R("Microsoft.FSharp.Collections.FSharpList`1",[e])}new R("System.Object"),new R("Microsoft.FSharp.Core.Unit"),new R("System.Char");const G=new R("System.String"),W=new R("System.Boolean");function q(e){const n=null==e.generics||function(e){return e.fullname.endsWith("[]")}(e)?[]:e.generics;return n.length>0?e.fullname+"["+n.map((e=>q(e))).join(",")+"]":e.fullname}function z(e){if(null!=e.fields)return e.fields();throw new Error(`${e.fullname} is not an F# record type`)}function K(e){if(!(e instanceof O))throw new Error("Value is not an F# union type")}var V;function J(e,n){switch(n){case 8:return e?[0,255]:[-128,127];case 16:return e?[0,65535]:[-32768,32767];case 32:return e?[0,4294967295]:[-2147483648,2147483647];default:throw new Error("Invalid bit size.")}}function Y(e,n,t,r,o){try{return o.contents=function(e,n,t,r,o){const i=function(e,n,t){const r=/^\s*([\+\-])?(0[xXoObB])?([0-9a-fA-F]+)\s*$/.exec(e.replace(/_/g,""));if(null!=r){const[,,e,o]=r;if(!function(e){switch(e){case 2:return/[^0-1]/;case 8:return/[^0-7]/;case 10:return/[^0-9]/;case 16:return/[^0-9a-fA-F]/;default:throw new Error("Invalid Base.")}}(t=t||function(e,n){if(n&V.AllowHexSpecifier)return 16;switch(e){case"0b":case"0B":return 2;case"0o":case"0O":return 8;case"0x":case"0X":return 16;default:return 10}}(e,n)).test(o))return function(e,n){const[,t,r,o]=e;return{sign:t||"",prefix:r||"",digits:o,radix:n}}(r,t)}return null}(e,n,void 0);if(null!=i){let e=Number.parseInt(i.sign+i.digits,i.radix);if(!Number.isNaN(e)){const[n,o]=J(!0,r);!t&&10!==i.radix&&e>=n&&e<=o&&(e=e<<32-r>>32-r);const[s,a]=J(t,r);if(e>=s&&e<=a)return e}}throw new Error("Input string was not in a correct format.")}(e,n,t,r),!0}catch(e){return!1}}new R("System.SByte"),new R("System.Byte"),new R("System.Int16"),new R("System.UInt16"),new R("System.Int32"),new R("System.UInt32"),new R("System.Single"),new R("System.Double"),new R("System.Decimal"),function(e){e[e.AllowHexSpecifier=512]="AllowHexSpecifier"}(V||(V={}));const Z=Symbol("numeric");function X(e){return"number"==typeof e||(null==e?void 0:e[Z])}function Q(e,n){return"number"==typeof e?e*n:e[Z]().multiply(n)}function ee(e,n){return"number"==typeof e?e.toFixed(n):e[Z]().toFixed(n)}function ne(e,n){return"number"==typeof e?e.toPrecision(n):e[Z]().toPrecision(n)}function te(e,n){return"number"==typeof e?e.toExponential(n):e[Z]().toExponential(n)}function re(e){return"number"==typeof e?(Number(e)>>>0).toString(16):e[Z]().toHex()}var oe=null;try{oe=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function ie(e,n,t){this.low=0|e,this.high=0|n,this.unsigned=!!t}function se(e){return!0===(e&&e.__isLong__)}ie.prototype.GetHashCode=function(){let e=this.unsigned?1:0;return e=(e<<5)+e^this.high,e=(e<<5)+e^this.low,e},ie.prototype.Equals=function(e){return Pe(this,e)},ie.prototype.CompareTo=function(e){return Me(this,e)},ie.prototype.toString=function(e){return Ae(this,e)},ie.prototype.toJSON=function(){return Ae(this)},ie.prototype[Z]=function(){const e=this;return{multiply:n=>Be(e,n),toPrecision:n=>String(e)+(0).toPrecision(n).substr(1),toExponential:n=>String(e)+(0).toExponential(n).substr(1),toFixed:n=>String(e)+(0).toFixed(n).substr(1),toHex:()=>{return Ae(e.unsigned?e:function(e,n,t){return t?function(e,n){return new ie(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)}(e,n):function(e,n){return new ie(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)}(e,n)}((n=e,t?function(e){var n=e.high,t=e.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&n,n>>>8&255,n>>>16&255,n>>>24]}(n):function(e){var n=e.high,t=e.low;return[n>>>24,n>>>16&255,n>>>8&255,255&n,t>>>24,t>>>16&255,t>>>8&255,255&t]}(n)),!0),16);var n,t}}},ie.prototype.__isLong__,Object.defineProperty(ie.prototype,"__isLong__",{value:!0});var ae={},le={};function ce(e,n){var t,r,o;return n?(o=0<=(e>>>=0)&&e<256)&&(r=le[e])?r:(t=ue(e,(0|e)<0?-1:0,!0),o&&(le[e]=t),t):(o=-128<=(e|=0)&&e<128)&&(r=ae[e])?r:(t=ue(e,e<0?-1:0,!1),o&&(ae[e]=t),t)}function de(e,n){if(isNaN(e))return n?xe:ye;if(n){if(e<0)return xe;if(e>=ge)return $e}else{if(e<=-be)return Ie;if(e+1>=be)return we}return e<0?He(de(-e,n)):ue(e%he|0,e/he|0,n)}function ue(e,n,t){return new ie(e,n,t)}var pe=Math.pow;function fe(e,n,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return ye;if("number"==typeof n?(t=n,n=!1):n=!!n,(t=t||10)<2||360)throw Error("interior hyphen");if(0===r)return He(fe(e.substring(1),n,t));for(var o=de(pe(t,8)),i=ye,s=0;s>>0:e.low}function Ce(e){return e.unsigned?(e.high>>>0)*he+(e.low>>>0):e.high*he+(e.low>>>0)}function Ae(e,n){if((n=n||10)<2||36>>0).toString(n);if(Le(s=l))return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}}function Le(e){return 0===e.high&&0===e.low}function Oe(e){return!e.unsigned&&e.high<0}function _e(e){return 1==(1&e.low)}function Pe(e,n){return se(n)||(n=me(n)),(e.unsigned===n.unsigned||e.high>>>31!=1||n.high>>>31!=1)&&e.high===n.high&&e.low===n.low}function Ne(e,n){return Me(e,n)<0}function Re(e,n){return Me(e,n)>0}function De(e,n){return Me(e,n)>=0}function Me(e,n){if(se(n)||(n=me(n)),Pe(e,n))return 0;var t=Oe(e),r=Oe(n);return t&&!r?-1:!t&&r?1:e.unsigned?n.high>>>0>e.high>>>0||n.high===e.high&&n.low>>>0>e.low>>>0?-1:1:Oe(Ue(e,n))?-1:1}function He(e){return!e.unsigned&&Pe(e,Ie)?Ie:Fe(function(e){return ue(~e.low,~e.high,e.unsigned)}(e),Te)}function Fe(e,n){se(n)||(n=me(n));var t=e.high>>>16,r=65535&e.high,o=e.low>>>16,i=65535&e.low,s=n.high>>>16,a=65535&n.high,l=n.low>>>16,c=0,d=0,u=0,p=0;return u+=(p+=i+(65535&n.low))>>>16,d+=(u+=o+l)>>>16,c+=(d+=r+a)>>>16,c+=t+s,ue((u&=65535)<<16|(p&=65535),(c&=65535)<<16|(d&=65535),e.unsigned)}function Ue(e,n){return se(n)||(n=me(n)),Fe(e,He(n))}function Be(e,n){if(Le(e))return e.unsigned?xe:ye;if(se(n)||(n=me(n)),oe)return ue(oe.mul(e.low,e.high,n.low,n.high),oe.get_high(),e.unsigned);if(Le(n))return e.unsigned?xe:ye;if(Pe(e,Ie))return _e(n)?Ie:ye;if(Pe(n,Ie))return _e(e)?Ie:ye;if(Oe(e))return Oe(n)?Be(He(e),He(n)):He(Be(He(e),n));if(Oe(n))return He(Be(e,He(n)));if(Ne(e,ve)&&Ne(n,ve))return de(Ce(e)*Ce(n),e.unsigned);var t=e.high>>>16,r=65535&e.high,o=e.low>>>16,i=65535&e.low,s=n.high>>>16,a=65535&n.high,l=n.low>>>16,c=65535&n.low,d=0,u=0,p=0,f=0;return p+=(f+=i*c)>>>16,u+=(p+=o*c)>>>16,p&=65535,u+=(p+=i*l)>>>16,d+=(u+=r*c)>>>16,u&=65535,d+=(u+=o*l)>>>16,u&=65535,d+=(u+=i*a)>>>16,d+=t*c+r*l+o*a+i*s,ue((p&=65535)<<16|(f&=65535),(d&=65535)<<16|(u&=65535),e.unsigned)}function je(e,n){if(se(n)||(n=me(n)),Le(n))throw Error("division by zero");var t,r,o;if(oe)return e.unsigned||-2147483648!==e.high||-1!==n.low||-1!==n.high?ue((e.unsigned?oe.div_u:oe.div_s)(e.low,e.high,n.low,n.high),oe.get_high(),e.unsigned):e;if(Le(e))return e.unsigned?xe:ye;if(e.unsigned){if(n.unsigned||(n=function(e){return e.unsigned?e:ue(e.low,e.high,!0)}(n)),Re(n,e))return xe;if(Re(n,function(e,n){if(se(n)&&(n=ke(n)),0==(n&=63))return e;var t=e.high;return n<32?ue(e.low>>>n|t<<32-n,t>>>n,e.unsigned):ue(32===n?t:t>>>n-32,0,e.unsigned)}(e,1)))return Se;o=xe}else{if(Pe(e,Ie))return Pe(n,Te)||Pe(n,Ee)?Ie:Pe(n,Ie)?Te:Pe(t=function(e,n){return se(n)&&(n=ke(n)),0==(n&=63)?e:n<32?ue(e.low<>>32-n,e.unsigned):ue(0,e.low<>>n|e.high<<32-n,e.high>>n,e.unsigned):ue(e.high>>n-32,e.high>=0?0:-1,e.unsigned)}(e,1),n),1),ye)?Oe(n)?Te:Ee:o=Fe(t,je(r=Ue(e,Be(n,t)),n));if(Pe(n,Ie))return e.unsigned?xe:ye;if(Oe(e))return Oe(n)?je(He(e),He(n)):He(je(He(e),n));if(Oe(n))return He(je(e,He(n)));o=ye}for(r=e;De(r,n);){t=Math.max(1,Math.floor(Ce(r)/Ce(n)));for(var i=Math.ceil(Math.log(t)/Math.LN2),s=i<=48?1:pe(2,i-48),a=de(t),l=Be(a,n);Oe(l)||Re(l,r);)l=Be(a=de(t-=s,e.unsigned),n);Le(a)&&(a=Te),o=Fe(o,a),r=Ue(r,l)}return o}const Ge=Fe,We=Be,qe=je,ze=He,Ke=function(e,n){return se(n)||(n=me(n)),ue(e.low&n.low,e.high&n.high,e.unsigned)},Ve=Me,Je=ue,Ye=ke;function Ze(e,n,t){let r=e,o=0;switch(t){case 0:r=e<<24>>24,o=r;break;case 4:r=e<<24>>>24;break;case 1:r=e<<16>>16,o=r;break;case 5:r=e<<16>>>16;break;case 2:r=e>>0,o=r;break;case 6:r=e>>>0}return ue(r,o>>31,n)}function Xe(e){const n=e<0,t=(e=Math.abs(e))%36e5/6e4;return(n?"-":"+")+d(~~(e/36e5),2)+":"+d(t,2)}function Qe(e,n){const t=e.toISOString();return"first"===n?t.substring(0,t.indexOf("T")):t.substring(t.indexOf("T")+1,t.length-1)}function en(e,n,t){return n.replace(/(\w)\1*/g,(n=>{let r=Number.NaN;switch(n.substring(0,1)){case"y":const o=t?e.getUTCFullYear():e.getFullYear();r=n.length<4?o%100:o;break;case"M":r=(t?e.getUTCMonth():e.getMonth())+1;break;case"d":r=t?e.getUTCDate():e.getDate();break;case"H":r=t?e.getUTCHours():e.getHours();break;case"h":const i=t?e.getUTCHours():e.getHours();r=i>12?i%12:i;break;case"m":r=t?e.getUTCMinutes():e.getMinutes();break;case"s":r=t?e.getUTCSeconds():e.getSeconds();break;case"f":r=t?e.getUTCMilliseconds():e.getMilliseconds()}return Number.isNaN(r)?n:r<10&&n.length>1?"0"+r:""+r}))}function nn(e,n,t){return null!=e.offset?function(e,n){var t,r,o;const i=new Date(e.getTime()+(null!==(t=e.offset)&&void 0!==t?t:0));if("string"!=typeof n)return i.toISOString().replace(/\.\d+/,"").replace(/[A-Z]|\.\d+/g," ")+Xe(null!==(r=e.offset)&&void 0!==r?r:0);if(1!==n.length)return en(i,n,!0);switch(n){case"D":case"d":return Qe(i,"first");case"T":case"t":return Qe(i,"second");case"O":case"o":return function(e,n){const t=e.toISOString();return t.substring(0,t.length-1)+Xe(n)}(i,null!==(o=e.offset)&&void 0!==o?o:0);default:throw new Error("Unrecognized Date print format")}}(e,n):function(e,n){const t=1===e.kind;if("string"!=typeof n)return t?e.toUTCString():e.toLocaleString();if(1!==n.length)return en(e,n,t);switch(n){case"D":case"d":return t?Qe(e,"first"):e.toLocaleDateString();case"T":case"t":return t?Qe(e,"second"):e.toLocaleTimeString();case"O":case"o":return function(e,n){if(n)return e.toISOString();{const n=null==e.kind||2===e.kind;return d(e.getFullYear(),4)+"-"+d(e.getMonth()+1,2)+"-"+d(e.getDate(),2)+"T"+d(e.getHours(),2)+":"+d(e.getMinutes(),2)+":"+d(e.getSeconds(),2)+"."+d(e.getMilliseconds(),3)+(n?Xe(-6e4*e.getTimezoneOffset()):"")}}(e,t);default:throw new Error("Unrecognized Date print format")}}(e,n)}function tn(e,n=0){if(0!=(-276&n))throw new Error("RegexOptions only supports: IgnoreCase, Multiline, Singleline and ECMAScript");let t="g";return t+=1&n?"i":"",t+=2&n?"m":"",t+=16&n?"s":"",new RegExp(e,t)}function rn(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function on(e,n,t=0){let r;return r=e instanceof RegExp?(r=e,e=n,r.lastIndex=t,r):r=tn(n,t),r.exec(e)}function sn(e,n,t=0){let r;if(r=e instanceof RegExp?(r=e,e=n,r.lastIndex=t,r):r=tn(n,t),!r.global)throw new Error("Non-global RegExp");let o=r.exec(e);const i=[];for(;null!==o;)i.push(o),o=r.exec(e);return i}const an=/(^|[^%])%([0+\- ]*)(\*|\d+)?(?:\.(\d+))?(\w)/g,ln=/\{(\d+)(,-?\d+)?(?:\:([a-zA-Z])(\d{0,2})|\:(.+?))?\}/g;function cn(e,n){return function(e,n){return"number"==typeof e?en?1:0:e.CompareTo(n)}(e,n)<0}function dn(e,n,t){function r(e){return!0===e||1===e||3===e||5===e}return null==e?null==n?0:-1:null==n?1:4===(o=t)||5===o?(r(t)&&(e=e.toLowerCase(),n=n.toLowerCase()),e===n?0:e0?t[0]:0;if(r<0)throw new Error("Start index cannot be negative");const o=t.length>1?t[1]:e.length-r;if(o<0)throw new Error("Length cannot be negative");if(o>e.length-r)throw new Error("Invalid startIndex and length");e=e.substr(r,o);for(const t of n){const n=e.indexOf(t);if(n>-1)return n+r}return-1}function pn(e){return{input:e,cont:(n=e,e=>{an.lastIndex=0;const t=[],r=[];let o=0,i=an.exec(n);for(;i;){const e=i.index+(i[1]||"").length;t.push(n.substring(o,e).replace(/%%/g,"%")),r.push(i),o=an.lastIndex,an.lastIndex-=1,i=an.exec(n)}return 0===t.length?e(n.replace(/%%/g,"%")):(t.push(n.substring(o).replace(/%%/g,"%")),vn(e,t,r))})};var n}function fn(e,n){return"string"==typeof n?e(n):n.cont(e)}function mn(e){return fn((e=>console.log(e)),e)}function hn(e){return fn((e=>e),e)}function gn(e){return fn((e=>{throw new Error(e)}),e)}function bn(e,n,t,r,o){let i="";if(n=n||"",o=o||"",X(e))switch("x"!==o.toLowerCase()&&(cn(e,0)?(e=Q(e,-1),i="-"):n.indexOf(" ")>=0?i=" ":n.indexOf("+")>=0&&(i="+")),r=null==r?null:parseInt(r,10),o){case"f":case"F":e=ee(e,r=null!=r?r:6);break;case"g":case"G":e=null!=r?ne(e,r):ne(e);break;case"e":case"E":e=null!=r?te(e,r):te(e);break;case"x":e=re(e);break;case"X":e=re(e).toUpperCase();break;default:e=String(e)}else e=e instanceof Date?nn(e):L(e);if(t="number"==typeof t?t:parseInt(t,10),isNaN(t))e=i+e;else{const r=n.indexOf("0")>=0,o=n.indexOf("-")>=0,s=o||!r?" ":"0";e="0"===s?i+(e=wn(e,t-i.length,s,o)):wn(i+e,t,s,o)}return e}function vn(e,n,t,r="",o=-1){return(...i)=>{let s=r;const a=n.slice(),l=t.slice();for(const e of i){const[,,n,t,r,i]=l[0];let c=t;if(o>=0)c=o,o=-1;else if("*"===c){if(e<0)throw new Error("Non-negative number required");o=e;continue}s+=a[0],s+=bn(e,n,c,r,i),a.splice(0,1),l.splice(0,1)}return 0===l.length?(s+=a[0],e(s)):vn(e,a,l,s,o)}}function yn(e,...n){return"object"==typeof e&&n.length>0&&(e=n[0],n.shift()),e.replace(ln,((e,t,r,o,i,s)=>{let a=n[t];if(X(a))switch(i=null==i?null:parseInt(i,10),o){case"f":case"F":a=ee(a,i=null!=i?i:2);break;case"g":case"G":a=null!=i?ne(a,i):ne(a);break;case"e":case"E":a=null!=i?te(a,i):te(a);break;case"p":case"P":i=null!=i?i:2,a=ee(Q(a,100),i)+" %";break;case"d":case"D":a=null!=i?wn(String(a),i,"0"):String(a);break;case"x":case"X":a=null!=i?wn(re(a),i,"0"):re(a),"X"===o&&(a=a.toUpperCase());break;default:if(s){let e="";a=s.replace(/(0+)(\.0+)?/,((n,t,r)=>(cn(a,0)&&(a=Q(a,-1),e="-"),a=ee(a,null!=r?r.length-1:0),wn(a,(t||"").length-e.length+(null!=r?r.length:0),"0")))),a=e+a}}else a=a instanceof Date?nn(a,s||o):L(a);return r=parseInt((r||" ").substring(1),10),isNaN(r)||(a=wn(String(a),Math.abs(r)," ",r<0)),a}))}function xn(e,n){const t=e.lastIndexOf(n);return t>=0&&t===e.length-n.length}function Tn(e){return"string"!=typeof e||0===e.length}function Sn(e){return"string"!=typeof e||/^\s*$/.test(e)}function En(e,n){return Array.isArray(n)?n.join(e):Array.from(n).join(e)}function wn(e,n,t,r){t=t||" ",n-=e.length;for(let o=0;oe.length)throw new Error("Invalid startIndex and/or length");return null!=t?e.substr(n,t):e.substr(n)}class An{constructor(e){this.value=e}toJSON(){return this.value}toString(){return String(this.value)}GetHashCode(){return b(this.value)}Equals(e){return null!=e&&T(this.value,e instanceof An?e.value:e)}CompareTo(e){return null==e?1:$(this.value,e instanceof An?e.value:e)}}function Ln(e){return null==e||e instanceof An?new An(e):e}function On(e){if(null==e)throw new Error("Option has no value");return e instanceof An?e.value:e}function _n(e,n){return null!=e?On(e):n}function Pn(e,n){return null!=n?Ln(e(On(n))):void 0}function Nn(e,n){return null!=n?e(On(n)):void 0}function Rn(e,n){return"function"==typeof e?new e(n):new Array(n)}function Dn(e,n,t,r){const o=0|n;return e.fill(r,o,o+t)}function Mn(e,n,t){if(e<0)throw new Error("The input must be non-negative\\nParameter name: count");const r=Rn(t,e);for(let t=0;t<=e-1;t++)r[t]=n(t);return r}function Hn(e,n){n.push(e)}function Fn(e,n){const t=a(e);try{for(;t["System.Collections.IEnumerator.MoveNext"]();)Hn(t["System.Collections.Generic.IEnumerator`1.get_Current"](),n)}finally{t.Dispose()}}const Un="The index was outside the range of elements in the list.",Bn="The input must be non-negative.",jn="The input sequence has an insufficient number of elements.";class Gn extends _{constructor(e,n){super(),this.head=e,this.tail=n}toString(){return"["+En("; ",this)+"]"}Equals(e){return this===e||((e,n)=>{e:for(;;){const t=e,r=n,o=[t.tail,r.tail];if(null!=o[0]){if(null!=o[1]){const i=o[0],s=o[1];if(T(t.head,r.head)){e=i,n=s;continue e}return!1}return!1}return null==o[1]}})(this,e)}GetHashCode(){return 0|((e,n,t)=>{for(;;){const r=e,o=n,i=t,s=i.tail;if(null==s)return 0|o;{const a=s;if(r>18)return 0|o;e=r+1,n=(o<<1)+b(i.head)+631*r,t=a}}})(0,0,this)}CompareTo(e){return 0|((e,n)=>{e:for(;;){const t=e,r=n,o=[t.tail,r.tail];if(null!=o[0]){if(null!=o[1]){const i=o[0],s=o[1],a=0|$(t.head,r.head);if(0===a){e=i,n=s;continue e}return 0|a}return 1}return null!=o[1]?-1:0}})(this,e)}GetEnumerator(){return new Wn(this)}[Symbol.iterator](){return l(this.GetEnumerator())}"System.Collections.IEnumerable.GetEnumerator"(){return a(this)}}class Wn{constructor(e){this.xs=e,this.it=this.xs,this.current=null}"System.Collections.Generic.IEnumerator`1.get_Current"(){return this.current}"System.Collections.IEnumerator.get_Current"(){return this.current}"System.Collections.IEnumerator.MoveNext"(){const e=this,n=e.it.tail;if(null!=n){const t=n;return e.current=e.it.head,e.it=t,!0}return!1}"System.Collections.IEnumerator.Reset"(){const e=this;e.it=e.xs,e.current=null}Dispose(){}}function qn(){return new Gn(null,void 0)}function zn(e,n){return new Gn(e,n)}function Kn(e){return null==e.tail}function Vn(e){return 0|((e,n)=>{for(;;){const t=e,r=n.tail;if(null==r)return 0|t;e=t+1,n=r}})(0,e)}function Jn(e){if(null!=e.tail)return e.head;throw new Error("List was empty\\nParameter name: list")}function Yn(e){const n=e.tail;if(null!=n)return n;throw new Error("List was empty\\nParameter name: list")}function Zn(){return qn()}function Xn(e,n){return zn(e,n)}function Qn(e){return zn(e,qn())}function et(e){return Kn(e)}function nt(e){return Vn(e)}function tt(e){return Jn(e)}function rt(e){return Yn(e)}function ot(e){const n=0|Vn(e),t=Dn(new Array(n),0,n,null);return((e,n)=>{for(;;){const r=e,o=n;if(Kn(o))break;t[r]=Jn(o),e=r+1,n=Yn(o)}})(0,e),t}function it(e,n,t){let r=n,o=t;for(;!Kn(o);)r=e(r,Jn(o)),o=Yn(o);return r}function st(e){return it(((e,n)=>zn(n,e)),qn(),e)}function at(e,n){return it(((n,t)=>{e(t)}),void 0,n)}function lt(e,n){it(((n,t)=>(e(n,t),n+1|0)),0,n)}function ct(e,n){let t=n;for(let n=e.length-1;n>=0;n--)t=zn(e[n],t);return t}function dt(e){return ct(e,qn())}function ut(e){let n,t;if(r(e))return dt(e);if(e instanceof Gn)return e;{const r=qn();let o=r;const i=a(e);try{for(;i["System.Collections.IEnumerator.MoveNext"]();){const e=i["System.Collections.Generic.IEnumerator`1.get_Current"]();n=o,t=new Gn(e,void 0),n.tail=t,o=t}}finally{i.Dispose()}const s=o,l=qn();return s.tail=l,Yn(r)}}function pt(e){const n=qn();let t=n;const o=e=>{t=it(((e,n)=>{const t=new Gn(n,void 0);return e.tail=t,t}),t,e)};if(r(e))e.forEach(o);else if(e instanceof Gn)at(o,e);else{const n=a(e);try{for(;n["System.Collections.IEnumerator.MoveNext"]();)o(n["System.Collections.Generic.IEnumerator`1.get_Current"]())}finally{n.Dispose()}}const i=t,s=qn();return i.tail=s,Yn(n)}function ft(e,n){return it(((e,n)=>zn(n,e)),n,st(e))}function mt(e,n){let t,r;const o=qn();let i=o,s=n;for(;!Kn(s);){let n=e(Jn(s));for(;!Kn(n);)t=i,r=new Gn(Jn(n),void 0),t.tail=r,i=r,n=Yn(n);s=Yn(s)}const a=i,l=qn();return a.tail=l,Yn(o)}function ht(e,n){const t=qn(),r=function(e,n,t){return((n,t,r)=>{for(;;){const o=n,i=t,s=r;if(Kn(s))return i;n=o+1,t=e(o,i,Jn(s)),r=Yn(s)}})(0,n,t)}(((n,t,r)=>{const o=new Gn(e(n,r),void 0);return t.tail=o,o}),t,n),o=qn();return r.tail=o,Yn(t)}function gt(e,n){const t=qn(),r=it(((n,t)=>{const r=new Gn(e(t),void 0);return n.tail=r,r}),t,n),o=qn();return r.tail=o,Yn(t)}function bt(e,n){return(n=>{e:for(;;){const t=n;if(Kn(t))return;{const r=e(Jn(t));if(null==r){n=Yn(t);continue e}return r}}})(n)}function vt(e,n){return bt((n=>e(n)?Ln(n):void 0),n)}function yt(e,n){return((n,t)=>{for(;;){const r=n,o=t;if(Kn(o))return;if(e(Jn(o)))return r;n=r+1,t=Yn(o)}})(0,n)}function xt(e,n){return function(e,n){return((e,t)=>{for(;;){const r=e,o=t,i=o.tail;if(null==i)throw new Error(Un+"\\nParameter name: index");if(r===n)return o.head;e=r+1,t=i}})(0,e)}(n,e)}function Tt(e,n){const t=qn(),r=it(((n,t)=>{if(e(t)){const e=new Gn(t,void 0);return n.tail=e,e}return n}),t,n),o=qn();return r.tail=o,Yn(t)}function St(e,n){const t=qn(),r=it(((n,t)=>{const r=e(t);if(null==r)return n;{const e=new Gn(On(r),void 0);return n.tail=e,e}}),t,n),o=qn();return r.tail=o,Yn(t)}function Et(e,n,t){return null!=yt((n=>t.Equals(e,n)),n)}function wt(e,n){return it(((n,t)=>!!n&&e(t)),!0,n)}function $t(e,n){return null!=yt(e,n)}function It(e,n){for(;;){const t=e,r=n;if(t<=0)return r;if(Kn(r))throw new Error(jn+"\\nParameter name: list");e=t-1,n=Yn(r)}}function kt(e,n){if(e<0)throw new Error(Bn+"\\nParameter name: count");const t=qn(),r=((e,n,t)=>{let r;for(;;){const o=e,i=n,s=t;if(o<=0)return i;if(Kn(s))throw new Error(jn+"\\nParameter name: list");e=o-1,r=new Gn(Jn(s),void 0),i.tail=r,n=r,t=Yn(s)}})(e,t,n),o=qn();return r.tail=o,Yn(t)}function Ct(e,n,t){const r=0|nt(t),o=0|_n(e,0),i=0|_n(n,r-1);if(o<0)throw new Error(Un+"\\nParameter name: startIndex");if(i>=r)throw new Error(Un+"\\nParameter name: endIndex");return i[[],[],[]]))}class Ot extends _{constructor(e,n,t,r,o,i,s,a,l,c){super(),this.Attributes=e,this.Comments=n,this.IsStatic=t,this.IsClass=r,this.Name=o,this.FullName=i,this.TypeParameters=s,this.Inherits=a,this.Members=l,this.Accessibility=c}}function _t(){return F("ts2fable.Syntax.FsInterface",[],Ot,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["IsStatic",W],["IsClass",W],["Name",G],["FullName",G],["TypeParameters",j(Cr())],["Inherits",j(Cr())],["Members",j(Cr())],["Accessibility",B(Lt())]]))}class Pt extends _{constructor(e){super(),this.Members=e}}function Nt(){return F("ts2fable.Syntax.FsTypeLiteral",[],Pt,(()=>[["Members",j(Cr())]]))}class Rt extends _{constructor(e,n,t){super(),this.Name=e,this.Constraint=n,this.Default=t}}function Dt(){return F("ts2fable.Syntax.FsGenericTypeParameter",[],Rt,(()=>[["Name",G],["Constraint",B(Cr())],["Default",B(Cr())]]))}class Mt extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Numeric","String","Unknown"]}}class Ht extends _{constructor(e,n,t,r,o){super(),this.Attributes=e,this.Comments=n,this.Name=t,this.Type=r,this.Value=o}}class Ft extends _{constructor(e,n,t,r){super(),this.Attributes=e,this.Comments=n,this.Name=t,this.Cases=r}}function Ut(){return F("ts2fable.Syntax.FsEnum",[],Ft,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["Name",G],["Cases",j(F("ts2fable.Syntax.FsEnumCase",[],Ht,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["Name",G],["Type",U("ts2fable.Syntax.FsEnumCaseType",[],Mt,(()=>[[],[],[]]))],["Value",B(G)]])))]]))}class Bt extends _{constructor(e,n){super(),this.Name=e,this.Content=n}}function jt(){return F("ts2fable.Syntax.FsCommentTag",[],Bt,(()=>[["Name",G],["Content",j(G)]]))}class Gt extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["HRef","CRef"]}}class Wt extends _{constructor(e,n,t){super(),this.Type=e,this.Target=n,this.Content=t}}class qt extends _{constructor(e,n){super(),this.Type=e,this.Content=n}}class zt extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Summary","Param","TypeParam","Returns","Remarks","SeeAlso","Example","Exception","Version","Default","Tag","UnknownTag","Unknown"]}}function Kt(){return U("ts2fable.Syntax.FsComment",[],zt,(()=>[[["Item",j(G)]],[["Item",jt()]],[["Item",jt()]],[["Item",j(G)]],[["Item",j(G)]],[["Item",F("ts2fable.Syntax.FsCommentLink",[],Wt,(()=>[["Type",U("ts2fable.Syntax.FsCommentLinkType",[],Gt,(()=>[[],[]]))],["Target",G],["Content",j(G)]]))]],[["Item",j(G)]],[["Item",F("ts2fable.Syntax.FsCommentException",[],qt,(()=>[["Type",B(G)],["Content",j(G)]]))]],[["Item",j(G)]],[["Item",j(G)]],[["Item",jt()]],[["Item",jt()]],[["Item",j(G)]]]))}class Vt extends _{constructor(e,n,t,r){super(),this.Name=e,this.Optional=n,this.ParamArray=t,this.Type=r}}function Jt(){return F("ts2fable.Syntax.FsParam",[],Vt,(()=>[["Name",G],["Optional",W],["ParamArray",W],["Type",Cr()]]))}class Yt extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Regular","Constructor","Call","StringParam"]}}class Zt extends _{constructor(e,n,t,r,o,i,s,a,l){super(),this.Attributes=e,this.Comments=n,this.Kind=t,this.IsStatic=r,this.Name=o,this.TypeParameters=i,this.Params=s,this.ReturnType=a,this.Accessibility=l}}function Xt(){return F("ts2fable.Syntax.FsFunction",[],Zt,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["Kind",U("ts2fable.Syntax.FsFunctionKind",[],Yt,(()=>[[],[],[],[["Item",G]]]))],["IsStatic",W],["Name",B(G)],["TypeParameters",j(Cr())],["Params",j(Jt())],["ReturnType",Cr()],["Accessibility",B(Lt())]]))}class Qt extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Regular","Index"]}}class er extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["ReadOnly","WriteOnly","ReadWrite"]}}class nr extends _{constructor(e,n,t,r,o,i,s,a,l,c){super(),this.Attributes=e,this.Comments=n,this.Kind=t,this.Index=r,this.Name=o,this.Option=i,this.Type=s,this.Accessor=a,this.IsStatic=l,this.Accessibility=c}}function tr(){return F("ts2fable.Syntax.FsProperty",[],nr,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["Kind",U("ts2fable.Syntax.FsPropertyKind",[],Qt,(()=>[[],[]]))],["Index",B(Jt())],["Name",G],["Option",W],["Type",Cr()],["Accessor",U("ts2fable.Syntax.FsAccessor",[],er,(()=>[[],[],[]]))],["IsStatic",W],["Accessibility",B(Lt())]]))}class rr extends _{constructor(e,n){super(),this.Type=e,this.TypeParameters=n}}function or(){return F("ts2fable.Syntax.FsGenericType",[],rr,(()=>[["Type",Cr()],["TypeParameters",j(Cr())]]))}class ir extends _{constructor(e,n){super(),this.Option=e,this.Types=n}}function sr(){return F("ts2fable.Syntax.FsUnion",[],ir,(()=>[["Option",W],["Types",j(Cr())]]))}class ar extends _{constructor(e,n,t,r,o){super(),this.Attributes=e,this.Comments=n,this.Name=t,this.Type=r,this.TypeParameters=o}}function lr(){return F("ts2fable.Syntax.FsAlias",[],ar,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["Name",G],["Type",Cr()],["TypeParameters",j(Cr())]]))}class cr extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Intersection","Tuple","Mapped"]}}class dr extends _{constructor(e,n){super(),this.Types=e,this.Kind=n}}function ur(){return F("ts2fable.Syntax.FsTuple",[],dr,(()=>[["Types",j(Cr())],["Kind",U("ts2fable.Syntax.FsTupleKind",[],cr,(()=>[[],[],[]]))]]))}class pr extends _{constructor(e,n){super(),this.PropertyName=e,this.Name=n}}class fr extends _{constructor(e,n,t){super(),this.ImportSpecifier=e,this.SpecifiedModule=n,this.ResolvedModule=t}}class mr extends _{constructor(e,n,t){super(),this.Module=e,this.SpecifiedModule=n,this.ResolvedModule=t}}class hr extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Type","Module"]}}function gr(){return U("ts2fable.Syntax.FsImport",[],hr,(()=>[[["Item",F("ts2fable.Syntax.FsTypeImport",[],fr,(()=>[["ImportSpecifier",F("ts2fable.Syntax.FsImportSpecifier",[],pr,(()=>[["PropertyName",B(G)],["Name",G]]))],["SpecifiedModule",G],["ResolvedModule",B(G)]]))]],[["Item",F("ts2fable.Syntax.ModuleImport",[],mr,(()=>[["Module",G],["SpecifiedModule",G],["ResolvedModule",B(G)]]))]]]))}class br extends _{constructor(e,n,t){super(),this.IsGlobal=e,this.Selector=n,this.Path=t}}class vr extends _{constructor(e,n,t,r,o,i,s,a,l){super(),this.Attributes=e,this.Comments=n,this.Export=t,this.HasDeclare=r,this.Name=o,this.Type=i,this.IsConst=s,this.IsStatic=a,this.Accessibility=l}Equals(e){return e instanceof vr&&this.Name===e.Name}GetHashCode(){return 0|m(this.Name)}CompareTo(e){if(e instanceof vr)return 0|E(this.Name,e.Name);throw new Error("cannot compare values of different types\\nParameter name: y")}}function yr(){return F("ts2fable.Syntax.FsVariable",[],vr,(()=>[["Attributes",j(j(Ir()))],["Comments",j(Kt())],["Export",B(F("ts2fable.Syntax.FsExport",[],br,(()=>[["IsGlobal",W],["Selector",G],["Path",G]])))],["HasDeclare",W],["Name",G],["Type",Cr()],["IsConst",W],["IsStatic",W],["Accessibility",B(Lt())]]))}class xr extends _{constructor(e){super(),this.Type=e}}function Tr(){return F("ts2fable.Syntax.FsKeyOf",[],xr,(()=>[["Type",Cr()]]))}class Sr extends _{constructor(e,n){super(),this.Name=e,this.FullName=n}}function Er(){return F("ts2fable.Syntax.FsMapped",[],Sr,(()=>[["Name",G],["FullName",G]]))}class wr extends _{constructor(e,n){super(),this.Name=e,this.Value=n}}class $r extends _{constructor(e,n,t){super(),this.Namespace=e,this.Name=n,this.Arguments=t}}function Ir(){return F("ts2fable.Syntax.FsAttribute",[],$r,(()=>[["Namespace",B(G)],["Name",G],["Arguments",j(F("ts2fable.Syntax.FsArgument",[],wr,(()=>[["Name",B(G)],["Value",G]])))]]))}class kr extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Interface","Enum","Property","Param","Array","TODO","None","Mapped","Function","Union","Alias","Generic","Tuple","Module","File","FileOut","Variable","StringLiteral","ExportAssignment","This","Import","TypeLiteral","GenericTypeParameter","KeyOf"]}}function Cr(){return U("ts2fable.Syntax.FsType",[],kr,(()=>[[["Item",_t()]],[["Item",Ut()]],[["Item",tr()]],[["Item",Jt()]],[["Item",Cr()]],[],[],[["Item",Er()]],[["Item",Xt()]],[["Item",sr()]],[["Item",lr()]],[["Item",or()]],[["Item",ur()]],[["Item",Lr()]],[["Item",Pr()]],[["Item",Rr()]],[["Item",yr()]],[["Item",G]],[["Item",G]],[],[["Item",gr()]],[["Item",Nt()]],[["Item",Dt()]],[["Item",Tr()]]]))}class Ar extends _{constructor(e,n,t,r,o,i,s){super(),this.Comments=e,this.HasDeclare=n,this.IsNamespace=t,this.Name=r,this.Types=o,this.HelperLines=i,this.Attributes=s}}function Lr(){return F("ts2fable.Syntax.FsModule",[],Ar,(()=>[["Comments",j(Kt())],["HasDeclare",W],["IsNamespace",W],["Name",G],["Types",j(Cr())],["HelperLines",j(G)],["Attributes",j(j(Ir()))]]))}class Or extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Index","Extra"]}}class _r extends _{constructor(e,n,t,r){super(),this.Kind=e,this.FileName=n,this.ModuleName=t,this.Modules=r}}function Pr(){return F("ts2fable.Syntax.FsFile",[],_r,(()=>[["Kind",U("ts2fable.Syntax.FsFileKind",[],Or,(()=>[[],[["Item",G]]]))],["FileName",G],["ModuleName",G],["Modules",j(Lr())]]))}class Nr extends _{constructor(e,n,t,r){super(),this.Namespace=e,this.Opens=n,this.Files=t,this.AbbrevTypes=r}}function Rr(){return F("ts2fable.Syntax.FsFileOut",[],Nr,(()=>[["Namespace",G],["Opens",j(G)],["Files",j(Pr())],["AbbrevTypes",j(G)]]))}function Dr(e){return Tt((e=>Kr(e)),e.Members)}function Mr(e){return $t((e=>Vr(e)),e.Members)}function Hr(e){return $t((e=>T(e.Type,new Mt(2))),e.Cases)?new Mt(2):$t((e=>T(e.Type,new Mt(1))),e.Cases)?new Mt(1):new Mt(0)}function Fr(e){return 0===e.tag}function Ur(e){let n,t;switch(et(e)?n=1:0===tt(e).tag&&et(rt(e))?(n=0,t=tt(e).fields[0]):n=1,n){case 0:return t;case 1:return}}function Br(e){return $t((n=>e.indexOf(n)>=0),dt(["","","","5'/1(*$$$4“$$$$$$$$%$&$$'%$$&$$$%$4$,F$%&&$$$$$$$$$$$$$$$$$$$$$$$($$$$$%%VS$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$(%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%$$$$$$$$$$$$%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$I%$)L$$%%$$P$$$%$%$$+>''%.)&%$%%.$$$%C$-8-'%$†$$*$$)%%$'%-&%$1$$$$A>%|.$1-D,%$&$%$%9'$,$&$(%2$<&%$$.X8$5.2$C$Y$$$$&+'$%$*-%%-$$2$%$+%%%9$*$$&'%$$&'%%%%$$+$'%$&%%-%%)$$$$$%%$$)'%%9$*$%$%$%%$$&%'%%&&$*'$$*-%&$$-%$$,$&$9$*$%$(%$$&($%$$%$%$2%%%-$$*$)$$%$+%%%9$*$%$(%$$$$$'%%%%$*%$'%$&%%-$$)-$$$)&&$'&%$$$%&%&&&/'%$%&&$&$%$)$1-&)$$($&$+$&$:$3&$&'$&$'*%$&(%%%-*$*$$$%$+$&$:$-$(%$$$$($$%$%%*%*$$%%%-$%0%%,$&$L%$&'$&$&$$$'&$*&%%-,$)$$%$5&;$,$$%*&$'&&$$$+)-%%$/S$%*'$)$+$-%H%$$$($;$$$-$%,$%($$$)%-%'C$&2$$&%)--$$$$$$$$$$%+$G'1$($%(.$G$+$)$%('%HN%'$)$%%%$-))%%'&$&%*&'0$%%)$$$-&$%I$$($%N$$&Ŭ$'%*$$$'%L$'%D$'%*$$$'%2$\\$'%f%&,7&3-)y%)%$ʏ$$4$=$$&n&&+*0$'&.5&%,5%/0$&$%/W%$*+$%.&$&$$$%-)-))$'&$$-)F$X*(%E$$(i-B$&'%&'%$)&'$&%-A%(.O'=)-$&E:%%$%%X$$$*$$$$%+)-%$-)-)*$)%1$%b'$R$$($$($%*'-*-,,&%$A$'%%$&%-O$$%&$$&%+'G++%%&(-&&-A)%,*N%&++&$0$*'$)$%$%$(Ob0$EH]$($$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$,$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$,+)%)%++++)%)%+$$$$$$$$++1%++++++($%'$$$&&$%'$&'%%'$&+(&%&$%'$%$.()%$$$%$$$+$$($,$$'%&$$$.$$$-$($-$$%)&$$$-&$$$0&C30'$&/2%$'$%$&%&$$$%$()$$$$$$'$$'$'$%%%($'$$%$$3F$$'$%'((%'$%$%$*$B%%$$$Bį+$$$$7%*$$t$A'C',7$+$(I((A$$G'+$(MKKq%-)G'G'K+W.$³Ś,9-+»)%$$O$%&$%:$$+:%*B+,S6$%((9)&$=($c['%%3%Q$&$%(''$&$@%&'$,*,*@%$@&C+$?%'(*,Y&*9%+6(+5*'/*slZV0V*)G'+-ʼnB$M$%$%%q@-$+9.'(y8*7:,$$$X2*'7-2&$P&'%%%$'.$%<*-)&G($+$-'$%$+F$%$,%$S&,%'''$$$-$$$&$7.5$<&&%$$%)$d*$$$'$2$-$)R$&+(-)%%$+%%%9$*$%$($%$%$'%%%&%$)$((%%*&(®X&+%&$$'(-%$$$&AS&)$$'%$%%$$+-ÉR&'%'%$%:'%ES&+%$$%&$.-)06N$$$%)$$$*-Y>%&%'$('-%&$ãO&,$%$‡CC-,/+%$%+$%$;)$%%%$$$$$$$&,-i+%J&'%%'$$$$$>$-K)$$'+$+$)%&Q0$%&$(@\\Ī,$H$*$)$$$(--6&%A%9$$*$%$%l*$%$I)&$$%$*$$+-))$%$C($%$%$$$$*-ř6%%%Ú$28+'40$ν‰’$(.ç૟ђ$,࿪ɪ⇜ɜ*B$-'%ƒA%($-S*(''$$--$*$8(6˓CC:'ˆn'$$Z*'0c%$$$.%1᠛+ӹM,⌚łT&4'+ƯधŽ(0&,*-%$%$'፿ę-J%_%&&)++%*A'^:e&$½7/z,<ª===*$5==$$%%$%%%'$+'$$$*$.==%$'%+$*$=%$'$($$&*$============?%<$<$)<$<$)<$<$)<$<$)<$<$)$$%UȣZ'U+$1$%(2($2ճ*$4%*$%$(øP&**%-'$$ƓO'-($ԣè%,*LEE*$'-'%̴^$&$'oP$2å'$>$%$$%$$-$'$$$$)$'$$$$$$&$%$$%$$$$$$$$$$%$$%'$*$'$'$$$-$4(&$($4W%ıO'‡/2%2$2$H-0Ä[@0O',*%1)½Ğ(˻+0&0&—/|*/7/'[+-)K+A%%qœ$u$ª/1%(&&(*,<**,&0*L¶$ZH-Щ꜁Eၘ.ā%ᚥ1ᵔూɁ؅፮򮳙$Aƒ£ē︳𐀡%𐀡"].map((e=>{var n;return(null!==(n=e.codePointAt(0))&&void 0!==n?n:0)-35})),n=[..."1.;=;78;<;6;+;<;#7;8>5>$7<8<1.;=?;>?'9<2?>?<->$;>-':-;#<#$<$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$'#$'#%$#%$#%$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#%$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$'$&>&>&>&>&>(#$#$&>#$@&$;#@>#;#@#@#$#@#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$<#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$?(*#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$@#@&;$;6@?=@(6(;(;(;(@'@';@2<;=;?(;2@;'&'(+;'(';'(2?(&(?('+'?';@2'('(@'('@+'(&?;&@(='(&(&(&(@;@'(@;@'@'@'@(2()'()(')()()'('(;+;&'()@'@'@'@'@'@'@(')(@)@)('@)@'@'(@+'=-?=';(@()@'@'@'@'@'@'@'@(@)(@(@(@(@'@'@+('(;@()@'@'@'@'@'@'@(')(@()@)(@'@'(@+;=@'(@()@'@'@'@'@'@'@(')()(@)@)(@()@'@'(@+?'-@('@'@'@'@'@'@'@'@'@'@)()@)@)(@'@)@+-?=?@()('@'@'@'@'()@(@(@(@'@'(@+@;-?'();'@'@'@'@'@(')()@()@)(@)@'@'(@+@'@()'@'@'(')(@)@)('?@')-'(@+-?'@()@'@'@'@'@'@(@)(@(@)@+@);@'('(@='&(;+;@'@'@'@'@'@'('('@'@&@(@+@'@'?;?;?(?+-?(?(?(7878)'@'@()(;('(@(@?(?@?;?;@')()()()('+;')('(')')'('()()(')+)(?#@#@#@$;&$'@'@'@'@'@'@'@'@'@'@'@'@'@'@'@'@(;-@'?@#@$@6'?;'.'78@';,'@'@'(@'(;@'(@'@'@(@'()()()(;&;='(@+@-@;6;(2@+@'&'@'('('@'@'@()()@)()(@?@;+'@'@'@'@+-@?'()(@;')()(@()()()(@(+@+@;&;@(*(@()'()()()()'@+;?(?@()')()()('+'()()()()@;')()(@;+@'+'&;$@#@#;@(;()('('(')('@$&$&$&(@(#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$@#@$#$#$@#@$@#@#@#@#$#$@$%$%$%$@$#%>$>$@$#%>$@$#@>$#>@$@$#%>@.26;9:79:79;/02.;9:;5;<78;<;5;.2@2-&@-<78&-<78@&@=@(*(*(@?#?#?$#$#$?#?<#?#?#?#?#?$#$'$?$#<#$?&'6';&'@'@'@?-?'?@'?@-?-?-?-?-?'?'@'&'@?@'&;'&;'+'@#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$'(*;(;&#$#$#$#$#$#$#$#$#$#$#$#$#$#$&(',(;@>&>#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$&$#$#$#$#$#$#$#$&>#$#$'#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$@#$#$#$@#$'&$'('('(')()?(@-?=?@';@)')(@;+@(';';'(+'(;'()@;'@()'()()();@&+@;'(&'+'@'()()(@'('()@+@;'&'?')()'('('('('('@'&;')();'&)(@'@'@'@'@'@$>&$&>@$')()();)(@+@'@'@'@34'@'@$@$@'('<'@'@'@'@'@'>@'87@'@'@'=?@(;78;@(;657878787878787878;78;5;@;6787878;<6<@;=;@'@'@2@;=;78;<;6;+;<;#7;8>5>$7<8<78;78;'&'&'@'@'@'@'@=<>?=@??@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@+@'@'@'@'@'@'@'@2@2@(@4@4@"].map((e=>{var n;return(null!==(n=e.codePointAt(0))&&void 0!==n?n:0)-35})),t=new Uint32Array(e),r=new Uint8Array(n);for(let e=1;e{let n=t.length,o=0;for(;n-o>1;){const r=Math.floor((n+o)/2),i=t[r];if(efunction(e,n){return 0!=(1<=0&&n$(e,n),{Compare:(n,t)=>e(n,t)};var e}const oo="The input sequence has an insufficient number of elements.";function io(){throw new Error("Enumeration has not started. Call MoveNext.")}function so(){throw new Error("Enumeration already finished.")}class ao{constructor(e){this.f=e}toString(){let e=0,n="seq [";const t=a(this);try{for(;e<4&&t["System.Collections.IEnumerator.MoveNext"]();)e>0&&(n+="; "),n+=L(t["System.Collections.Generic.IEnumerator`1.get_Current"]()),e=e+1|0;return 4===e&&(n+="; ..."),n+"]"}finally{t.Dispose()}}GetEnumerator(){return this.f()}[Symbol.iterator](){return l(this.GetEnumerator())}"System.Collections.IEnumerable.GetEnumerator"(){return this.f()}}class lo{constructor(e,n,t){this.current=e,this.next=n,this.dispose=t}"System.Collections.Generic.IEnumerator`1.get_Current"(){return this.current()}"System.Collections.IEnumerator.get_Current"(){return this.current()}"System.Collections.IEnumerator.MoveNext"(){return this.next()}"System.Collections.IEnumerator.Reset"(){return function(){throw new Error("Reset is not supported on this enumerator.")}()}Dispose(){this.dispose()}}function co(e,n,t){return new lo(e,n,t)}function uo(e,n,t){let r,o=!1,i=Ln(e());const s=()=>{if(null!=i){const e=On(i);try{t(e)}finally{i=void 0}}},a=()=>{try{s()}finally{r=void 0}};return co((()=>(o||io(),null!=r?On(r):so())),(()=>{if(o||(o=!0),null!=i){const e=On(i);let t;try{t=n(e)}catch(e){throw a(),e}return null!=t?(r=t,!0):(a(),!1)}return!1}),s)}function po(e){return function(e){return new ao(e)}(e)}function fo(e){return n="source",null==e&&function(e){throw new Error(e)}(n),a(e);var n}function mo(e){return po((()=>a(e())))}function ho(e){return po((()=>function(e){let n,t,r,o=!1,i=!1;const s=()=>{if(i=!0,null!=t){const e=t;try{e.Dispose()}finally{t=void 0}}if(null!=n){const e=n;try{e.Dispose()}finally{n=void 0}}};return co((()=>(o?i&&so():io(),null!=r?On(r):so())),(()=>{let l;if(o||(o=!0),i)return!1;{let o;for(;null==o;){const i=[n,t];if(null!=i[0])if(null!=i[1]){const e=i[1];if(e["System.Collections.IEnumerator.MoveNext"]())r=Ln(e["System.Collections.Generic.IEnumerator`1.get_Current"]()),o=!0;else try{e.Dispose()}finally{t=void 0}}else{const e=i[0];e["System.Collections.IEnumerator.MoveNext"]()?(l=e["System.Collections.Generic.IEnumerator`1.get_Current"](),t=a(l)):(s(),o=!1)}else n=a(e)}return On(o)}}),(()=>{i||s()}))}(e)))}function go(e){return mo((()=>function(e,n){const t=Rn(void 0,1);return t[0]=e,t}(e)))}function bo(e){return r(e)?dt(e):e instanceof Gn?e:ut(e)}function vo(e,n,t){return po((()=>uo(e,n,t)))}function yo(e,n){return ho([e,n])}function xo(e,n){return function(n,t){return vo((()=>fo(t)),(n=>{let t;for(;null==t&&n["System.Collections.IEnumerator.MoveNext"]();)r=n["System.Collections.Generic.IEnumerator`1.get_Current"](),t=e(r)?Ln(r):void 0;var r;return t}),(e=>{e.Dispose()}))}(0,n)}function To(e,n){const t=fo(n);try{let n=!1;for(;!n&&t["System.Collections.IEnumerator.MoveNext"]();)n=e(t["System.Collections.Generic.IEnumerator`1.get_Current"]());return n}finally{t.Dispose()}}function So(e,n,t){const r=fo(t);try{let t=n;for(;r["System.Collections.IEnumerator.MoveNext"]();)t=e(t,r["System.Collections.Generic.IEnumerator`1.get_Current"]());return t}finally{r.Dispose()}}function Eo(e,n){return!To((n=>!e(n)),n)}function wo(e,n){return So(((n,t)=>{e(t)}),void 0,n)}function $o(e,n){So(((n,t)=>(e(n,t),n+1|0)),0,n)}function Io(e,n){return vo((()=>fo(n)),(n=>n["System.Collections.IEnumerator.MoveNext"]()?Ln(e(n["System.Collections.Generic.IEnumerator`1.get_Current"]())):void 0),(e=>{e.Dispose()}))}function ko(e,n){return po((()=>{const t=fo(n);try{for(let n=1;n<=e;n++)if(!t["System.Collections.IEnumerator.MoveNext"]())throw new Error(oo+"\\nParameter name: source");return function(e,n){return co((()=>n["System.Collections.Generic.IEnumerator`1.get_Current"]()),(()=>n["System.Collections.IEnumerator.MoveNext"]()),(()=>{try{n.Dispose()}finally{e()}}))}((()=>{}),t)}catch(e){throw t.Dispose(),e}}))}class Co{constructor(e){this.k=e}}function Ao(e){return new Co(e)}function Lo(e){return e.k}class Oo extends Co{constructor(e,n,t,r){super(e),this.left=n,this.right=t,this.h=0|r}}function _o(e,n,t,r){return new Oo(e,n,t,r)}function Po(e){return e.left}function No(e){return e.right}function Ro(e){return e.h}function Do(e,n){e:for(;;){const t=e,r=n;if(null!=t){const o=t;if(o instanceof Oo){e=Po(o),n=Do(No(o),r+1);continue e}return r+1|0}return 0|r}}function Mo(e){return Do(e,0)}function Ho(e,n,t){let r,o;if(null!=e){const n=e;r=n instanceof Oo?Ro(n):1}else r=0;if(null!=t){const e=t;o=e instanceof Oo?Ro(e):1}else o=0;const i=0|(ra+2){const i=On(t);if(i instanceof Oo){if(r=Po(i),(null!=r?(o=r,o instanceof Oo?Ro(o):1):0)>a+1){const t=On(Po(i));if(t instanceof Oo)return Ho(Ho(e,n,Po(t)),Lo(t),Ho(No(t),Lo(i),No(i)));throw new Error("internal error: Set.rebalance")}return Ho(Ho(e,n,Po(i)),Lo(i),No(i))}throw new Error("internal error: Set.rebalance")}if(a>l+2){const r=On(e);if(r instanceof Oo){if(i=No(r),(null!=i?(s=i,s instanceof Oo?Ro(s):1):0)>l+1){const e=On(No(r));if(e instanceof Oo)return Ho(Ho(Po(r),Lo(r),Po(e)),Lo(e),Ho(No(e),n,t));throw new Error("internal error: Set.rebalance")}return Ho(Po(r),Lo(r),Ho(No(r),n,t))}throw new Error("internal error: Set.rebalance")}return Ho(e,n,t)}function Uo(e,n,t){if(null!=t){const r=t,o=0|e.Compare(n,Lo(r));if(r instanceof Oo)return o<0?Fo(Uo(e,n,Po(r)),Lo(r),No(r)):0===o?t:Fo(Po(r),Lo(r),Uo(e,n,No(r)));{const o=0|e.Compare(n,Lo(r));return o<0?_o(n,void 0,t,2):0===o?t:_o(n,t,void 0,2)}}return Ao(n)}function Bo(e,n,t){e:for(;;){const r=e,o=n,i=t;if(null!=i){const s=i,a=0|r.Compare(o,Lo(s));if(s instanceof Oo){if(a<0){e=r,n=o,t=Po(s);continue e}if(0===a)return!0;e=r,n=o,t=No(s);continue e}return 0===a}return!1}}function jo(e,n){e:for(;;){const t=e,r=n;if(null!=r){const o=r;if(o instanceof Oo){jo(t,Po(o)),t(Lo(o)),e=t,n=No(o);continue e}t(Lo(o))}break}}class Go extends _{constructor(e,n){super(),this.stack=e,this.started=n}}function Wo(e){e:for(;;){const n=e;if(et(n))return Zn();{const t=tt(n),r=rt(n);if(null!=t){const o=t;if(o instanceof Oo){e=ct([Po(o),Ao(Lo(o)),No(o)],r);continue e}return n}e=r;continue e}}}function qo(e){return new Go(Wo(Qn(e)),!1)}function zo(e){if(e.started){const n=e.stack;if(et(n))return function(){throw new Error("Enumeration already started")}();if(null!=tt(n))return Lo(tt(n));throw new Error("Please report error: Set iterator, unexpected stack for current")}return function(){throw new Error("Enumeration not started")}()}function Ko(e){let n=qo(e);return{"System.Collections.Generic.IEnumerator`1.get_Current":()=>zo(n),"System.Collections.IEnumerator.get_Current":()=>zo(n),"System.Collections.IEnumerator.MoveNext":()=>function(e){if(e.started){const n=e.stack;if(et(n))return!1;if(null!=tt(n)){if(tt(n)instanceof Oo)throw new Error("Please report error: Set iterator, unexpected stack for moveNext");return e.stack=Wo(rt(n)),!et(e.stack)}throw new Error("Please report error: Set iterator, unexpected stack for moveNext")}return e.started=!0,!et(e.stack)}(n),"System.Collections.IEnumerator.Reset"(){n=qo(e)},Dispose(){}}}function Vo(e,n,t){return null==n?null==t?0:-1:null==t?1:0|function(e,n,t){e:for(;;){const r=e,o=n,i=t,s=[o,i];if(et(s[0]))return et(s[1])?0:-1;if(et(s[1]))return 1;if(null!=tt(s[1]))if(null!=tt(s[0])){const a=tt(s[0]),l=tt(s[1]);if(a instanceof Oo)if(null==Po(a)){if(!(l instanceof Oo)){const o=0|r.Compare(Lo(a),Lo(l));if(0!==o)return 0|o;e=r,n=Xn(No(a),rt(s[0])),t=Xn(void 0,rt(s[1]));continue e}if(null==Po(l)){const o=0|r.Compare(Lo(a),Lo(l));if(0!==o)return 0|o;e=r,n=Xn(No(a),rt(s[0])),t=Xn(No(l),rt(s[1]));continue e}{const s=[o,i];let a,l,c,d,u;switch(et(s[0])?et(s[1])?a=2:null!=tt(s[1])?(a=1,d=rt(s[1]),u=tt(s[1])):a=2:null!=tt(s[0])?(a=0,l=rt(s[0]),c=tt(s[0])):et(s[1])?a=2:null!=tt(s[1])?(a=1,d=rt(s[1]),u=tt(s[1])):a=2,a){case 0:if(c instanceof Oo){e=r,n=ct([Po(c),_o(Lo(c),void 0,No(c),0)],l),t=i;continue e}e=r,n=ct([void 0,Ao(Lo(c))],l),t=i;continue e;case 1:if(u instanceof Oo){e=r,n=o,t=ct([Po(u),_o(Lo(u),void 0,No(u),0)],d);continue e}e=r,n=o,t=ct([void 0,Ao(Lo(u))],d);continue e;case 2:throw new Error("unexpected state in SetTree.compareStacks")}}}else{const s=[o,i];let a,l,c,d,u;switch(et(s[0])?et(s[1])?a=2:null!=tt(s[1])?(a=1,d=rt(s[1]),u=tt(s[1])):a=2:null!=tt(s[0])?(a=0,l=rt(s[0]),c=tt(s[0])):et(s[1])?a=2:null!=tt(s[1])?(a=1,d=rt(s[1]),u=tt(s[1])):a=2,a){case 0:if(c instanceof Oo){e=r,n=ct([Po(c),_o(Lo(c),void 0,No(c),0)],l),t=i;continue e}e=r,n=ct([void 0,Ao(Lo(c))],l),t=i;continue e;case 1:if(u instanceof Oo){e=r,n=o,t=ct([Po(u),_o(Lo(u),void 0,No(u),0)],d);continue e}e=r,n=o,t=ct([void 0,Ao(Lo(u))],d);continue e;case 2:throw new Error("unexpected state in SetTree.compareStacks")}}else{if(!(l instanceof Oo)){const o=0|r.Compare(Lo(a),Lo(l));if(0!==o)return 0|o;e=r,n=rt(s[0]),t=rt(s[1]);continue e}if(null==Po(l)){const o=0|r.Compare(Lo(a),Lo(l));if(0!==o)return 0|o;e=r,n=Xn(void 0,rt(s[0])),t=Xn(No(l),rt(s[1]));continue e}{const s=[o,i];let a,l,c,d,u;switch(et(s[0])?et(s[1])?a=2:null!=tt(s[1])?(a=1,d=rt(s[1]),u=tt(s[1])):a=2:null!=tt(s[0])?(a=0,l=rt(s[0]),c=tt(s[0])):et(s[1])?a=2:null!=tt(s[1])?(a=1,d=rt(s[1]),u=tt(s[1])):a=2,a){case 0:if(c instanceof Oo){e=r,n=ct([Po(c),_o(Lo(c),void 0,No(c),0)],l),t=i;continue e}e=r,n=ct([void 0,Ao(Lo(c))],l),t=i;continue e;case 1:if(u instanceof Oo){e=r,n=o,t=ct([Po(u),_o(Lo(u),void 0,No(u),0)],d);continue e}e=r,n=o,t=ct([void 0,Ao(Lo(u))],d);continue e;case 2:throw new Error("unexpected state in SetTree.compareStacks")}}}}else{tt(s[1]);const a=[o,i];let l,c,d,u,p;switch(et(a[0])?et(a[1])?l=2:null!=tt(a[1])?(l=1,u=rt(a[1]),p=tt(a[1])):l=2:null!=tt(a[0])?(l=0,c=rt(a[0]),d=tt(a[0])):et(a[1])?l=2:null!=tt(a[1])?(l=1,u=rt(a[1]),p=tt(a[1])):l=2,l){case 0:if(d instanceof Oo){e=r,n=ct([Po(d),_o(Lo(d),void 0,No(d),0)],c),t=i;continue e}e=r,n=ct([void 0,Ao(Lo(d))],c),t=i;continue e;case 1:if(p instanceof Oo){e=r,n=o,t=ct([Po(p),_o(Lo(p),void 0,No(p),0)],u);continue e}e=r,n=o,t=ct([void 0,Ao(Lo(p))],u);continue e;case 2:throw new Error("unexpected state in SetTree.compareStacks")}}else{if(null==tt(s[0])){e=r,n=rt(s[0]),t=rt(s[1]);continue e}{tt(s[0]);const a=[o,i];let l,c,d,u,p;switch(et(a[0])?et(a[1])?l=2:null!=tt(a[1])?(l=1,u=rt(a[1]),p=tt(a[1])):l=2:null!=tt(a[0])?(l=0,c=rt(a[0]),d=tt(a[0])):et(a[1])?l=2:null!=tt(a[1])?(l=1,u=rt(a[1]),p=tt(a[1])):l=2,l){case 0:if(d instanceof Oo){e=r,n=ct([Po(d),_o(Lo(d),void 0,No(d),0)],c),t=i;continue e}e=r,n=ct([void 0,Ao(Lo(d))],c),t=i;continue e;case 1:if(p instanceof Oo){e=r,n=o,t=ct([Po(p),_o(Lo(p),void 0,No(p),0)],u);continue e}e=r,n=o,t=ct([void 0,Ao(Lo(p))],u);continue e;case 2:throw new Error("unexpected state in SetTree.compareStacks")}}}break}}(e,Qn(n),Qn(t))}function Jo(e,n,t){let r=0|t;jo((e=>{n[r]=e,r=r+1|0}),e)}function Yo(e,n){if(r(n))return function(e,n){return t=(n,t)=>Uo(e,t,n),n.reduce(((e,n)=>t(e,n)),void 0);var t}(e,n);if(n instanceof Gn)return function(e,n){return it(((n,t)=>Uo(e,t,n)),void 0,n)}(e,n);{const t=a(n);try{return function(e,n,t){for(;;){const r=e,o=n,i=t;if(!i["System.Collections.IEnumerator.MoveNext"]())return o;e=r,n=Uo(r,i["System.Collections.Generic.IEnumerator`1.get_Current"](),o),t=i}}(e,void 0,t)}finally{t.Dispose()}}}class Zo{constructor(e,n){this.comparer=e,this.tree=n}GetHashCode(){return 0|function(e){let n=0;const t=a(e);try{for(;t["System.Collections.IEnumerator.MoveNext"]();)n=(n<<1)+b(t["System.Collections.Generic.IEnumerator`1.get_Current"]())+631|0}finally{t.Dispose()}return 0|Math.abs(n)}(this)}Equals(e){return e instanceof Zo&&0===Vo(Qo(this),ei(this),ei(e))}toString(){return"set ["+En("; ",Io((e=>L(e)),this))+"]"}get[Symbol.toStringTag](){return"FSharpSet"}CompareTo(e){return 0|Vo(Qo(this),ei(this),ei(e))}"System.Collections.Generic.ICollection`1.Add2B595"(e){throw new Error("ReadOnlyCollection")}"System.Collections.Generic.ICollection`1.Clear"(){throw new Error("ReadOnlyCollection")}"System.Collections.Generic.ICollection`1.Remove2B595"(e){throw new Error("ReadOnlyCollection")}"System.Collections.Generic.ICollection`1.Contains2B595"(e){return Bo(Qo(this),e,ei(this))}"System.Collections.Generic.ICollection`1.CopyToZ2E171D71"(e,n){Jo(ei(this),e,n)}"System.Collections.Generic.ICollection`1.get_IsReadOnly"(){return!0}"System.Collections.Generic.ICollection`1.get_Count"(){return 0|ni(this)}"System.Collections.Generic.IReadOnlyCollection`1.get_Count"(){return 0|ni(this)}GetEnumerator(){return Ko(ei(this))}[Symbol.iterator](){return l(this.GetEnumerator())}"System.Collections.IEnumerable.GetEnumerator"(){return Ko(ei(this))}get size(){return 0|ni(this)}add(e){throw new Error("Set cannot be mutated")}clear(){throw new Error("Set cannot be mutated")}delete(e){throw new Error("Set cannot be mutated")}has(e){return ti(this,e)}keys(){return Io((e=>e),this)}values(){return Io((e=>e),this)}entries(){return Io((e=>[e,e]),this)}forEach(e,n){const t=this;wo((n=>{e(n,n,t)}),t)}}function Xo(e,n){return new Zo(e,n)}function Qo(e){return e.comparer}function ei(e){return e.tree}function ni(e){return Mo(ei(e))}function ti(e,n){return Bo(Qo(e),n,ei(e))}function ri(e,n){return ti(n,e)}function oi(e,n){return Xo(n,Yo(n,e))}function ii(e,n){return Xo(n,Yo(n,e))}const si=oi(dt(["atomic","break","checked","component","const","constraint","constructor","continue","eager","event","external","fixed","functor","include","measure","method","mixin","object","parallel","params","process","protected","pure","sealed","tailcall","trait","virtual","volatile","asr","land","lor","lsl","lsr","lxor","mod","sig"]),{Compare:(e,n)=>E(e,n)}),ai=oi(dt(["abstract","and","as","assert","base","begin","class","default","delegate","do","done","downcast","downto","elif","else","end","exception","extern","false","finally","for","fun","function","global","if","in","inherit","inline","interface","internal","lazy","let","match","member","module","mutable","namespace","new","null","of","open","or","override","private","public","rec","return","sig","static","struct","then","to","true","try","type","upcast","use","val","void","when","while","with","yield"]),{Compare:(e,n)=>E(e,n)}),li=oi(dt(["Readonly","Partial","Pick","HTMLDialogElement","HTMLWebViewElement"]),{Compare:(e,n)=>E(e,n)});var ci=t(9368);function di(e){return $n(e,"\\","/")}function ui(e){const n=di(e);return n.indexOf("/")>=0?new Zr(1,ut(n.split("/"))):new Zr(0,void 0)}function pi(e){return Sn(e)?void 0:to(e,0)?e:void 0}function fi(e){return Sn(e)?"":e[0].toLocaleUpperCase()+Cn(e,1)}function mi(e){if(Sn(e))return"";{const n=Cn(e,1),t=e[0].toLocaleLowerCase();return hn(pn("%c%s"))(t)(n)}}function hi(e){return!(Sn(e)||!Eo((e=>!!Qr(e)||"_"===e),e.split(""))||"_"===e||no(e,0))}function gi(e){if(Sn(e))return"Empty";{const n=En("",gt((e=>fi(e)),function(e){const n=Io((e=>e),e.split(""));return st(((e,n,t)=>{let r,o;e:for(;;){const s=e,a=n,l=t;let c,d,u;if(et(l))c=0;else{const e=Sn(i=tt(l))?void 0:no(i,0)?i:void 0;null!=e?(o=e,et(a)&&""===s?(c=1,d=e,u=rt(l)):c=2):c=2}switch(c){case 0:return Xn(s,a);case 1:e="N"+d,n=a,t=u;continue e;case 2:{let o,i,c;if(et(l))o=1;else{const e=pi(tt(l));null!=e?(r=e,""===s?(o=0,i=e,c=rt(l)):o=1):o=1}switch(o){case 0:e=i,n=a,t=c;continue e;case 1:{let r,o,i;if(et(l))r=1;else{const e=pi(tt(l));null!=e?(r=0,o=e,i=rt(l)):r=1}switch(r){case 0:e=o,n=Xn(s,a),t=i;continue e;case 1:if(et(l))throw new Error("Match failure: Microsoft.FSharp.Collections.FSharpList`1");if("-"===tt(l)){e="",n=Xn(s,a),t=rt(l);continue e}if("."===tt(l)){e="_",n=Xn(s,a),t=rt(l);continue e}e=s+tt(l),n=a,t=rt(l);continue e}}}}}break}var i})("",Zn(),ut(n)))}(e)));return hi(n)?n:"``"+$n(n,"`","'")+"``"}}function bi(e,n){let t,r;return t=Cn(e,1),r=Cn(e,0,1).toLocaleLowerCase(),hn(pn("%s%s"))(r)(t)===n}function vi(e){const n=Io((e=>e),e.split(""));return st(((e,n,t)=>{for(;;){const r=e,o=n,i=t;if(et(i))return Xn(r,o);"-"!==tt(i)&&"/"!==tt(i)&&"."!==tt(i)?(e=r+tt(i),n=o,t=rt(i)):(e="",n=Xn(r,o),t=rt(i))}})("",Zn(),ut(n)))}function yi(e){if(Tn(e))return"";{const n=$n(e,"'","");return 0===n.indexOf("``")&&xn(n,"``")?n:ti(si,n)||ti(ai,n)||-1!==un(n,["-","/","$"])||n.length>0&&no(n,0)||-1!==un(Cn(n,0,1),[".","["])||"_"===n?hn(pn("``%s``"))(n):n}}function xi(e){const n=En("_",vi(fi($n(e,"'",""))));return ti(si,n)||ti(ai,n)?hn(pn("%s_"))(n):n}function Ti(e){if(Tn(e))return"";{const n=e[0];return'"'===n||"'"===n?In(e,n):e}}function Si(e){const n=ci.resolve(e),t=function(e,n,t,r){if(r="number"==typeof r?r:void 0,(t="number"==typeof t?t:void 0)&&t<0)throw new Error("Count cannot be less than zero");if(0===t)return[];if(!Array.isArray(n)){if(0===r)return e.split(n,t);const o=arguments.length;n=Array(o-1);for(let e=1;ern(e)))).length>0?n:[" "];let o=0;const i=[],s=new RegExp(n.join("|"),"g");for(;null==t||t>1;){const n=s.exec(e);if(null===n)break;(!r||n.index-o>0)&&(t=null!=t?t-1:t,i.push(e.substring(o,n.index))),o=s.lastIndex}return(!r||e.length-o>0)&&i.push(e.substring(o)),i}(n,[ci.sep],null,0),r=(o=e=>"node_modules"===e,(e=>{for(;;){const n=e;if(n<0)return;if(o(i[n]))return n;e=n-1}})((i=t).length-1));var o,i;if(null==r){const e=function(e){return 0===e.length?void 0:Ln(e[e.length-1])}(t);if(null!=e){if("index.d.ts"===e)return ci.basename(ci.dirname(n));{const n=e;return ci.basename(n,xn(n,".d.ts")?".d.ts":ci.extname(n))}}throw new Error("No path specified")}{const e=dt(t.slice(r+1,t.length));let n,o,i,s;switch(et(e)?n=2:"@types"===tt(e)?et(rt(e))?n=2:(n=0,o=tt(rt(e))):et(rt(e))?n=2:0===tt(e).indexOf("@")?(n=1,i=tt(rt(e)),s=tt(e)):n=2,n){case 0:return o.indexOf("__")>=0?"@"+$n(o,"__","/"):o;case 1:return s+"/"+i;case 2:return et(e)?"node_modules":tt(e)}}}const Ei=oi(dt(["string","obj","unit","float","bool"]),{Compare:(e,n)=>E(e,n)});var wi=t(5423);function $i(e,n){return e.replace(/[a-z]?[A-Z]/g,(e=>1===e.length?e.toLowerCase():e.charAt(0)+n+e.charAt(1).toLowerCase()))}function Ii(e,n=0){const t={},r=n;function o(e){throw new Error("Cannot infer key and value of "+String(e))}function i(e,n,r){e=function(e,n){switch(n){case 1:return e.charAt(0).toLowerCase()+e.slice(1);case 2:return $i(e,"_");case 3:return $i(e,"_").toUpperCase();case 4:return $i(e,"-");case 0:default:return e}}(e,n),t[e]=r}for(let n of e){let e=0;if(null==n&&o(n),n instanceof O){const t=n.cases()[n.tag];n=0===n.fields.length?t:[t].concat(n.fields),e=r}if(Array.isArray(n))switch(n.length){case 0:o(n);break;case 1:i(n[0],e,!0);break;case 2:const t=n[1];i(n[0],e,t);break;default:i(n[0],e,n.slice(1))}else"string"==typeof n?i(n,e,!0):o(n)}return t}function ki(e,n,t){return!!e.has(n)&&(t.contents=e.get(n),!0)}function Ci(e,n){return!n.has(e)&&(n.add(e),!0)}function Ai(e,n,t){if(e.has(n))throw new Error("An item with the same key has already been added. Key: "+n);e.set(n,t)}function Li(e,n){if(e.has(n))return e.get(n);throw new Error(`The given key '${n}' was not present in the dictionary.`)}class Oi{constructor(e,n){const t=new P(null);this.comparer=n,t.contents=this,this.hashMap=new Map([]),this["init@8-2"]=1;const r=a(e);try{for(;r["System.Collections.IEnumerator.MoveNext"]();)Ri(t.contents,r["System.Collections.Generic.IEnumerator`1.get_Current"]())}finally{r.Dispose()}}get[Symbol.toStringTag](){return"HashSet"}"System.Collections.IEnumerable.GetEnumerator"(){return a(this)}GetEnumerator(){return a(ho(this.hashMap.values()))}[Symbol.iterator](){return l(this.GetEnumerator())}"System.Collections.Generic.ICollection`1.Add2B595"(e){Ri(this,e)}"System.Collections.Generic.ICollection`1.Clear"(){Pi(this)}"System.Collections.Generic.ICollection`1.Contains2B595"(e){return Di(this,e)}"System.Collections.Generic.ICollection`1.CopyToZ2E171D71"(e,n){$o(((t,r)=>{e[n+t]=r}),this)}"System.Collections.Generic.ICollection`1.get_Count"(){return 0|Ni(this)}"System.Collections.Generic.ICollection`1.get_IsReadOnly"(){return!1}"System.Collections.Generic.ICollection`1.Remove2B595"(e){return Mi(this,e)}get size(){return 0|Ni(this)}add(e){return Ri(this,e),this}clear(){Pi(this)}delete(e){return Mi(this,e)}has(e){return Di(this,e)}keys(){return Io((e=>e),this)}values(){return Io((e=>e),this)}entries(){return Io((e=>[e,e]),this)}forEach(e,n){const t=this;wo((n=>{e(n,n,t)}),t)}}function _i(e,n){const t=0|e.comparer.GetHashCode(n);let r,o=null;return r=[ki(e.hashMap,t,new P((()=>o),(e=>{o=e}))),o],r[0]?[!0,t,r[1].findIndex((t=>e.comparer.Equals(n,t)))]:[!1,t,-1]}function Pi(e){e.hashMap.clear()}function Ni(e){let n=0,t=a(e.hashMap.values());try{for(;t["System.Collections.IEnumerator.MoveNext"]();)n=n+t["System.Collections.Generic.IEnumerator`1.get_Current"]().length|0}finally{t.Dispose()}return 0|n}function Ri(e,n){const t=_i(e,n);let r;switch(r=t[0]&&t[2]>-1?0:1,r){case 0:return!1;case 1:return t[0]?(Li(e.hashMap,t[1]).push(n),!0):(e.hashMap.set(t[1],[n]),!0)}}function Di(e,n){const t=_i(e,n);let r;switch(r=t[0]&&t[2]>-1?0:1,r){case 0:return!0;case 1:return!1}}function Mi(e,n){const t=_i(e,n);let r;switch(r=t[0]&&t[2]>-1?0:1,r){case 0:return Li(e.hashMap,t[1]).splice(t[2],1),!0;case 1:return!1}}class Hi{constructor(e,n){const t=new P(null);this.comparer=n,t.contents=this,this.hashMap=new Map([]),this["init@8-1"]=1;const r=a(e);try{for(;r["System.Collections.IEnumerator.MoveNext"]();){const e=r["System.Collections.Generic.IEnumerator`1.get_Current"]();Gi(t.contents,e[0],e[1])}}finally{r.Dispose()}}get[Symbol.toStringTag](){return"Dictionary"}"System.Collections.IEnumerable.GetEnumerator"(){return a(this)}GetEnumerator(){return a(ho(this.hashMap.values()))}[Symbol.iterator](){return l(this.GetEnumerator())}"System.Collections.Generic.ICollection`1.Add2B595"(e){Gi(this,e[0],e[1])}"System.Collections.Generic.ICollection`1.Clear"(){Bi(this)}"System.Collections.Generic.ICollection`1.Contains2B595"(e){const n=Ui(this,e[0]);let t;switch(t=null!=n&&T(n[1],e[1])?0:1,t){case 0:return!0;case 1:return!1}}"System.Collections.Generic.ICollection`1.CopyToZ2E171D71"(e,n){$o(((t,r)=>{e[n+t]=r}),this)}"System.Collections.Generic.ICollection`1.get_Count"(){return 0|ji(this)}"System.Collections.Generic.ICollection`1.get_IsReadOnly"(){return!1}"System.Collections.Generic.ICollection`1.Remove2B595"(e){const n=Ui(this,e[0]);return null!=n&&(T(n[1],e[1])&&Wi(this,e[0]),!0)}get size(){return 0|ji(this)}clear(){Bi(this)}delete(e){return Wi(this,e)}entries(){return Io((e=>[e[0],e[1]]),this)}get(e){return function(e,n){const t=Ui(e,n);if(null!=t)return t[1];throw new Error("The item was not found in collection")}(this,e)}has(e){return function(e,n){const t=Fi(e,n);let r;switch(r=t[0]&&t[2]>-1?0:1,r){case 0:return!0;case 1:return!1}}(this,e)}keys(){return Io((e=>e[0]),this)}set(e,n){return function(e,n,t){const r=Fi(e,n);let o;switch(o=r[0]&&r[2]>-1?0:1,o){case 0:Li(e.hashMap,r[1])[r[2]]=[n,t];break;case 1:r[0]?Li(e.hashMap,r[1]).push([n,t]):e.hashMap.set(r[1],[[n,t]])}}(this,e,n),this}values(){return Io((e=>e[1]),this)}forEach(e,n){const t=this;wo((n=>{e(n[1],n[0],t)}),t)}}function Fi(e,n){const t=0|e.comparer.GetHashCode(n);let r,o=null;return r=[ki(e.hashMap,t,new P((()=>o),(e=>{o=e}))),o],r[0]?[!0,t,r[1].findIndex((t=>e.comparer.Equals(n,t[0])))]:[!1,t,-1]}function Ui(e,n){const t=Fi(e,n);let r;switch(r=t[0]&&t[2]>-1?0:1,r){case 0:return Li(e.hashMap,t[1])[t[2]];case 1:return}}function Bi(e){e.hashMap.clear()}function ji(e){let n=0,t=a(e.hashMap.values());try{for(;t["System.Collections.IEnumerator.MoveNext"]();)n=n+t["System.Collections.Generic.IEnumerator`1.get_Current"]().length|0}finally{t.Dispose()}return 0|n}function Gi(e,n,t){const r=Fi(e,n);let o;switch(o=r[0]&&r[2]>-1?0:1,o){case 0:{const e=yn("An item with the same key has already been added. Key: {0}",n);throw new Error(e)}case 1:r[0]?Li(e.hashMap,r[1]).push([n,t]):e.hashMap.set(r[1],[[n,t]])}}function Wi(e,n){const t=Fi(e,n);let r;switch(r=t[0]&&t[2]>-1?0:1,r){case 0:return Li(e.hashMap,t[1]).splice(t[2],1),!0;case 1:return!1}}function qi(e,n){return bo(function(e,n){return mo((()=>{const t=new Oi([],n);return xo((e=>Ci(e,t)),e)}))}(e,n))}function zi(e){e:for(;;){const n=e;switch(n.tag){case 7:return n.fields[0].Name;case 4:{const e=zi(n.fields[0]);return hn(pn("ResizeArray<%s>"))(e)}case 9:{const e=n.fields[0];if(1===nt(e.Types)){const n=e.Option?" option":"",t=zi(xt(0,e.Types));return hn(pn("%s%s"))(t)(n)}{const n=[];let t;const r=0|nt(e.Types);t=hn(pn("U%d<"))(r),n.push(t);const o=En(", ",gt((e=>zi(e)),e.Types));let i;n.push(o);const s=e.Option?" option":"";return i=hn(pn(">%s"))(s),n.push(i),En("",n)}}case 11:return Ki(n.fields[0]);case 8:{const e=n.fields[0],t=[],r=0===nt(e.Params)?dt([Gr("unit"),e.ReturnType]):ft(gt((e=>e.Type),e.Params),Qn(e.ReturnType));t.push("(");const o=En(" -> ",gt((e=>zi(e)),r));return t.push(o),t.push(")"),En("",t)}case 12:{const e=[],t=En(" * ",gt((e=>zi(e)),n.fields[0].Types));return e.push(t),En("",e)}case 16:{const e=n.fields[0],t=zi(e.Type),r=e.IsConst?"":" with get, set";return hn(pn("abstract %s: %s%s"))(e.Name)(t)(r)}case 17:return"string";case 2:e=n.fields[0].Type;continue e;case 1:{const e=Jr(n),t=Yr(n);return mn(pn("unextracted printType %s: %s"))(t)(e),Vi(n.fields[0])}case 22:return n.fields[0].Name;case 23:{const e=zi(n.fields[0].Type);return hn(pn("KeyOf<%s>"))(e)}default:{const e=Jr(n),t=Yr(n);return mn(pn("unsupported printType %s: %s"))(t)(e),"obj"}}break}}function Ki(e){const n=[];let t;const r=zi(e.Type);if(t=hn(pn("%s"))(r),n.push(t),nt(e.TypeParameters)>0){n.push("<");const t=En(", ",gt((e=>zi(e)),e.TypeParameters));n.push(t),n.push(">")}return En("",n)}function Vi(e){switch(Hr(e).tag){case 1:return"string";case 2:return"obj";default:return"float"}}function Ji(e){const n=[],t=e.Kind;switch(t.tag){case 1:n.push("[] ");break;case 2:n.push('[] ');break;case 3:{const e=hn(pn('[] '))(t.fields[0]);n.push(e);break}}let r;const o=On(e.Name);r=hn(pn("abstract %s"))(o),n.push(r);const i=gt((n=>{if(n.ParamArray){let t;const r=n.Type;if(4===r.tag){const e=zi(r.fields[0]);t=hn(pn("%s[]"))(e)}else{const r=Jr(new kr(8,e));mn(pn("ParamArray function is not an array type: %s"))(r),t=zi(n.Type)}const o=n.Optional?"?":"";return hn(pn("[] %s%s: %s"))(o)(n.Name)(t)}{const e=zi(n.Type),t=n.Optional?"?":"";return hn(pn("%s%s: %s"))(t)(n.Name)(e)}}),e.Params);if(0===nt(i)){const e=hn(pn(": unit"));n.push(e)}else{let e;const t=En(" * ",i);e=hn(pn(": %s"))(t),n.push(e)}let s;const a=zi(e.ReturnType);s=hn(pn(" -> %s"))(a),n.push(s);const l=Zi(e.TypeParameters);return n.push(l),En("",n)}function Yi(e){let n;switch(e.Accessor.tag){case 1:n=" with set";break;case 2:n=" with get, set";break;default:n=""}const t=e.Option?" option":"";let r;const o=zi(e.Type),i=[e.Option,(s=e.Type,12===s.tag?s.fields[0]:void 0)];var s;let a,l;switch(a=i[0]&&null!=i[1]&&1===i[1].Kind.tag&&nt(i[1].Types)>1?0:1,a){case 0:r=hn(pn("(%s)"))(o);break;case 1:r=o}const c=e.Index;if(null!=c){const e=c,n=zi(e.Type);l=hn(pn("%s: %s -> "))(e.Name)(n)}else l="";const d=1===e.Kind.tag?"[] ":"";return hn(pn("%sabstract %s: %s%s%s%s"))(d)(e.Name)(l)(r)(t)(n)}function Zi(e){const n=St((e=>function(e){const n=e.Constraint;if(null!=n){const t=n=>hn(pn("%s :> %s"))(e.Name)(n),r=e=>{let n,o,i,s;switch(7===e.tag?(n=0,o=e.fields[0]):11===e.tag?(n=1,i=e.fields[0]):12===e.tag&&T(e.fields[0].Kind,new cr(0))?(n=2,s=e.fields[0]):n=3,n){case 0:return t(o.Name);case 1:return t(Ki(i));case 2:{const e=St(r,s.Types);return et(e)?void 0:En(" and ",e)}case 3:return}};return r(n)}}(e)),St((e=>zr(e)),e));if(et(n))return"";{const e=En(" and ",n);return hn(pn(" when %s"))(e)}}function Xi(e){if(0===nt(e))return"";{const n=[];n.push("<");const t=En(", ",gt((e=>zi(e)),e));n.push(t);const r=Zi(e);return n.push(r),n.push(">"),En("",n)}}function Qi(e,n,t){const r=t=>{const r=hn(pn("%s/// %s"))(n)(t);e.push(r)},o=e=>{at(r,e)},i=(e,n,t)=>{let i;if(et(n))i=e;else{const t=En(" ",gt((e=>hn(pn('%s="%s"'))(e[0])(e[1])),n));i=hn(pn("%s %s"))(e)(t)}et(t)?r(hn(pn("<%s />"))(i)):et(rt(t))?r(hn(pn("<%s>%s"))(i)(tt(t))(e)):(r(hn(pn("<%s>"))(i)),o(t),r(hn(pn(""))(e)))};let s,l;switch(et(t)?s=0:0===tt(t).tag&&et(rt(t))&&wt((e=>!Br(e)),tt(t).fields[0])?(s=1,l=tt(t).fields[0]):s=2,s){case 0:break;case 1:o(l);break;case 2:{const e=a(t);try{for(;e["System.Collections.IEnumerator.MoveNext"]();){const n=e["System.Collections.Generic.IEnumerator`1.get_Current"]();switch(n.tag){case 1:{const e=n.fields[0];i("param",Qn(["name",e.Name]),e.Content);break}case 3:i("returns",Zn(),n.fields[0]);break;case 4:i("remarks",Zn(),n.fields[0]);break;case 5:{const e=n.fields[0];i("seealso",Qn([1===e.Type.tag?"cref":"href",e.Target]),e.Content);break}case 2:{const e=n.fields[0];i("typeparam",Qn(["name",e.Name]),e.Content);break}case 6:i("example",Zn(),n.fields[0]);break;case 7:{const e=n.fields[0];i("exception",Qn(["cref",_n(e.Type,"")]),e.Content);break}case 8:i("version",Zn(),n.fields[0]);break;case 9:i("default",Zn(),n.fields[0]);break;case 10:{const e=n.fields[0];i(e.Name,Zn(),e.Content);break}case 11:case 12:break;default:i("summary",Zn(),n.fields[0])}}}finally{e.Dispose()}break}}}function es(e,n,t){if(et(t));else{const r=a(t);try{for(;r["System.Collections.IEnumerator.MoveNext"]();)if(et(t));else{const t=En("; ",gt((e=>{let n;const t=e.Namespace;if(null!=t){const r=t;n=hn(pn("%s.%s"))(r)(e.Name)}else n=e.Name;const r=e.Arguments;if(et(r))return n;{const e=En(", ",gt((e=>{const n=e.Name;if(null==n)return e.Value;{const t=n;return hn(pn("%s = %s"))(t)(e.Value)}}),r));return hn(pn("%s(%s)"))(n)(e)}}),r["System.Collections.Generic.IEnumerator`1.get_Current"]())),o=hn(pn("%s[<%s>]"))(n)(t);e.push(o)}}finally{r.Dispose()}}}function ns(e,n,t){const r=hn(pn(""));switch(e.push(r),Qi(e,n,t.Comments),es(e,n,t.Attributes),Hr(t).tag){case 1:{const r=hn(pn("%stype [] [] %s ="))(n)(t.Name);e.push(r);const o=a(t.Cases);try{for(;o["System.Collections.IEnumerator.MoveNext"]();){const t=o["System.Collections.Generic.IEnumerator`1.get_Current"]();Qi(e,n+" ",t.Comments),es(e,n+" ",t.Attributes);const r=t.Name,i=$n(_n(t.Value,r),'"','\\"'),s=gi(r),a=[];if(bi(s,i)){const e=hn(pn(" | %s"))(s);a.push(e)}else{const e=hn(pn(' | [] %s'))(i)(s);a.push(e)}let l;const c=En("",a);l=hn(pn("%s%s"))(n)(c),e.push(l)}}finally{o.Dispose()}break}case 2:{const r=hn(pn("%stype %s ="))(n)(t.Name);e.push(r);const o=hn(pn("%s obj"))(n);e.push(o);break}default:{const r=hn(pn("%stype [] %s ="))(n)(t.Name);e.push(r);const o=a(t.Cases);try{for(;o["System.Collections.IEnumerator.MoveNext"]();){const t=o["System.Collections.Generic.IEnumerator`1.get_Current"]();Qi(e,n+" ",t.Comments),es(e,n+" ",t.Attributes);const r=gi(t.Name),i=[],s=hn(pn(" | %s"))(r);if(i.push(s),null!=t.Value){let e;const n=On(t.Value);e=hn(pn(" = %s"))(n),i.push(e)}let a;const l=En("",i);a=hn(pn("%s%s"))(n)(l),e.push(a)}}finally{o.Dispose()}}}}function ts(e,n,t){const r=0|e.length;let o;if(""!==t.Name){e.push(""),Qi(e,n,t.Comments),es(e,n,t.Attributes);const r=hn(pn("%smodule %s ="))(n)(t.Name);e.push(r),o=hn(pn("%s "))(n)}else o=n;const i=a(t.HelperLines);try{for(;i["System.Collections.IEnumerator.MoveNext"]();){const n=i["System.Collections.Generic.IEnumerator`1.get_Current"](),t=hn(pn("%s%s"))(o)(n);e.push(t)}}finally{i.Dispose()}const s=a(t.Types);try{for(;s["System.Collections.IEnumerator.MoveNext"]();){const n=s["System.Collections.Generic.IEnumerator`1.get_Current"]();if(20===n.tag){const t=n.fields[0];if(1===t.tag){const n=t.fields[0];if(n.Module!==n.SpecifiedModule){const t=hn(pn("%smodule %s = %s"))(o)(n.Module)(n.SpecifiedModule);e.push(t)}}}}}finally{s.Dispose()}const l=a(t.Types);try{for(;l["System.Collections.IEnumerator.MoveNext"]();){const n=l["System.Collections.Generic.IEnumerator`1.get_Current"]();if(20===n.tag){const t=n.fields[0];if(0===t.tag){const n=t.fields[0],r=n.ImportSpecifier,i=r.PropertyName;if(null==i){const t=hn(pn("%stype %s = %s.%s"))(o)(r.Name)(n.SpecifiedModule)(r.Name);e.push(t)}else{const t=i,s=hn(pn("%stype %s = %s.%s"))(o)(r.Name)(n.SpecifiedModule)(t);e.push(s)}}}}}finally{l.Dispose()}const c=a(t.Types);try{for(;c["System.Collections.IEnumerator.MoveNext"]();){const n=c["System.Collections.Generic.IEnumerator`1.get_Current"]();switch(n.tag){case 0:{const t=n.fields[0],r=t.Members;let i,s;switch(et(r)?i=1:1===tt(r).tag&&et(rt(r))?(i=0,s=tt(r).fields[0]):i=1,i){case 0:ns(e,o,new Ft(s.Attributes,ft(t.Comments,s.Comments),t.Name,s.Cases));break;case 1:{const n=hn(pn(""));let r;e.push(n),Qi(e,o,t.Comments),es(e,o,t.Attributes);const i=Xi(t.TypeParameters);r=hn(pn("%stype [] %s%s ="))(o)(t.Name)(i),e.push(r);const s=new P(0),l=a(t.Inherits);try{for(;l["System.Collections.IEnumerator.MoveNext"]();){let n;const t=zi(l["System.Collections.Generic.IEnumerator`1.get_Current"]());n=hn(pn("%s inherit %s"))(o)(t),e.push(n),s.contents++}}finally{l.Dispose()}const c=a(t.Members);try{for(;c["System.Collections.IEnumerator.MoveNext"]();){const n=c["System.Collections.Generic.IEnumerator`1.get_Current"](),t=hn(pn("%s "))(o);switch(n.tag){case 8:{const r=n.fields[0];let o;Qi(e,t,r.Comments),es(e,t,r.Attributes);const i=Ji(r);o=hn(pn("%s%s"))(t)(i),e.push(o),s.contents++;break}case 2:{const r=n.fields[0];let o;Qi(e,t,r.Comments),es(e,t,r.Attributes);const i=Yi(r);o=hn(pn("%s%s"))(t)(i),e.push(o),s.contents++;break}case 16:{const r=n.fields[0];let o;Qi(e,t,r.Comments),es(e,t,r.Attributes);const i=zi(n);o=hn(pn("%s%s"))(t)(i),e.push(o),s.contents++;break}default:{let r;const o=zi(n);r=hn(pn("%s %s"))(t)(o),e.push(r),s.contents++}}}}finally{c.Dispose()}if(0===s.contents){const n=hn(pn("%s interface end"))(o);e.push(n)}break}}break}case 1:ns(e,o,n.fields[0]);break;case 10:{const t=n.fields[0],r=hn(pn(""));let i;e.push(r),Qi(e,o,t.Comments),es(e,o,t.Attributes);const s=Xi(t.TypeParameters);let a;i=hn(pn("%stype %s%s ="))(o)(t.Name)(s),e.push(i);const l=zi(t.Type);a=hn(pn("%s %s"))(o)(l),e.push(a);break}case 13:ts(e,o,n.fields[0]);break;case 16:{const t=n.fields[0];if(t.HasDeclare){let n;Qi(e,o,t.Comments),es(e,o,t.Attributes);const r=zi(t.Type);let i;const s=t.Export;if(null!=s){const e=s;i=e.IsGlobal?"[] ":hn(pn('[] '))(e.Selector)(e.Path)}else i="";n=hn(pn("%slet %s%s: %s = jsNative"))(o)(i)(t.Name)(r),e.push(n)}break}}}}finally{c.Dispose()}if(e.length-r==2)for(let n=0;n<=1;n++)e.splice(e.length-1,1)}class rs{constructor(e,n){this.k=e,this.v=n}}function os(e,n){return new rs(e,n)}function is(e){return e.k}function ss(e){return e.v}class as extends rs{constructor(e,n,t,r,o){super(e,n),this.left=t,this.right=r,this.h=0|o}}function ls(e,n,t,r,o){return new as(e,n,t,r,o)}function cs(e){return e.left}function ds(e){return e.right}function us(e){return e.h}function ps(e,n){e:for(;;){const t=e,r=n;if(null!=r){const o=r;if(o instanceof as){e=ps(t+1,cs(o)),n=ds(o);continue e}return t+1|0}return 0|t}}function fs(e){return ps(0,e)}function ms(e,n,t,r){let o,i;if(null!=e){const n=e;o=n instanceof as?us(n):1}else o=0;if(null!=r){const e=r;i=e instanceof as?us(e):1}else i=0;const s=0|(ol+2){const s=On(r);if(s instanceof as){if(o=cs(s),(null!=o?(i=o,i instanceof as?us(i):1):0)>l+1){const r=On(cs(s));if(r instanceof as)return ms(ms(e,n,t,cs(r)),is(r),ss(r),ms(ds(r),is(s),ss(s),ds(s)));throw new Error("internal error: Map.rebalance")}return ms(ms(e,n,t,cs(s)),is(s),ss(s),ds(s))}throw new Error("internal error: Map.rebalance")}if(l>c+2){const o=On(e);if(o instanceof as){if(s=ds(o),(null!=s?(a=s,a instanceof as?us(a):1):0)>c+1){const e=On(ds(o));if(e instanceof as)return ms(ms(cs(o),is(o),ss(o),cs(e)),is(e),ss(e),ms(ds(e),n,t,r));throw new Error("internal error: Map.rebalance")}return ms(cs(o),is(o),ss(o),ms(ds(o),n,t,r))}throw new Error("internal error: Map.rebalance")}return ms(e,n,t,r)}function gs(e,n,t,r){if(null!=r){const o=r,i=0|e.Compare(n,is(o));return o instanceof as?i<0?hs(gs(e,n,t,cs(o)),is(o),ss(o),ds(o)):0===i?ls(n,t,cs(o),ds(o),us(o)):hs(cs(o),is(o),ss(o),gs(e,n,t,ds(o))):i<0?ls(n,t,void 0,r,2):0===i?os(n,t):ls(n,t,r,void 0,2)}return os(n,t)}function bs(e,n){e:for(;;){const t=e,r=n;if(null!=r){const o=r;if(o instanceof as){bs(t,cs(o)),t(is(o),ss(o)),e=t,n=ds(o);continue e}t(is(o),ss(o))}break}}function vs(e,n){bs(e,n)}function ys(e,n){if(r(n))return function(e,n){let t;for(let r=0;r<=n.length-1;r++){const o=n[r];t=gs(e,o[0],o[1],t)}return t}(e,n);if(n instanceof Gn)return function(e,n){return it(((n,t)=>gs(e,t[0],t[1],n)),void 0,n)}(e,n);{const t=a(n);try{return function(e,n,t){for(;;){const r=e,o=n,i=t;if(!i["System.Collections.IEnumerator.MoveNext"]())return o;{const s=i["System.Collections.Generic.IEnumerator`1.get_Current"]();e=r,n=gs(r,s[0],s[1],o),t=i}}}(e,void 0,t)}finally{t.Dispose()}}}class xs extends _{constructor(e,n){super(),this.stack=e,this.started=n}}function Ts(e){e:for(;;){const n=e;if(et(n))return Zn();{const t=rt(n),r=tt(n);if(null!=r){const o=r;if(o instanceof as){e=ct([cs(o),os(is(o),ss(o)),ds(o)],t);continue e}return n}e=t;continue e}}}function Ss(e){return new xs(Ts(Qn(e)),!1)}function Es(e){if(e.started){const n=e.stack;if(et(n))return function(){throw new Error("enumeration already finished")}();if(null!=tt(n)){const e=tt(n);if(e instanceof as)throw new Error("Please report error: Map iterator, unexpected stack for current");return[is(e),ss(e)]}throw new Error("Please report error: Map iterator, unexpected stack for current")}return function(){throw new Error("enumeration not started")}()}function ws(e){let n=Ss(e);return{"System.Collections.Generic.IEnumerator`1.get_Current":()=>Es(n),"System.Collections.IEnumerator.get_Current":()=>Es(n),"System.Collections.IEnumerator.MoveNext":()=>function(e){if(e.started){const n=e.stack;if(et(n))return!1;if(null!=tt(n)){if(tt(n)instanceof as)throw new Error("Please report error: Map iterator, unexpected stack for moveNext");return e.stack=Ts(rt(n)),!et(e.stack)}throw new Error("Please report error: Map iterator, unexpected stack for moveNext")}return e.started=!0,!et(e.stack)}(n),"System.Collections.IEnumerator.Reset"(){n=Ss(e)},Dispose(){}}}class $s{constructor(e,n){this.comparer=e,this.tree=n}GetHashCode(){return 0|function(e){const n=(e,n)=>(e<<1)+n+631;let t=0;const r=a(e);try{for(;r["System.Collections.IEnumerator.MoveNext"]();){const e=r["System.Collections.Generic.IEnumerator`1.get_Current"]();t=0|n(t,b(e[0])),t=0|n(t,b(e[1]))}}finally{r.Dispose()}return 0|t}(this)}Equals(e){if(!(e instanceof $s))return!1;{const n=a(this);try{const t=a(e);try{const e=()=>{const r=n["System.Collections.IEnumerator.MoveNext"]();if(r===t["System.Collections.IEnumerator.MoveNext"]()){if(r){const r=n["System.Collections.Generic.IEnumerator`1.get_Current"](),o=t["System.Collections.Generic.IEnumerator`1.get_Current"]();return!(!T(r[0],o[0])||!T(r[1],o[1]))&&e()}return!0}return!1};return e()}finally{t.Dispose()}}finally{n.Dispose()}}}toString(){return"map ["+En("; ",Io((e=>yn("({0}, {1})",e[0],e[1])),this))+"]"}get[Symbol.toStringTag](){return"FSharpMap"}GetEnumerator(){return ws(this.tree)}[Symbol.iterator](){return l(this.GetEnumerator())}"System.Collections.IEnumerable.GetEnumerator"(){return ws(this.tree)}CompareTo(e){const n=this;if(e instanceof $s)return 0|function(e,n,t){const r=fo(n);try{const n=fo(t);try{let t=0,o=r["System.Collections.IEnumerator.MoveNext"](),i=n["System.Collections.IEnumerator.MoveNext"]();for(;0===t&&o&&i;)t=0|e(r["System.Collections.Generic.IEnumerator`1.get_Current"](),n["System.Collections.Generic.IEnumerator`1.get_Current"]()),0===t&&(o=r["System.Collections.IEnumerator.MoveNext"](),i=n["System.Collections.IEnumerator.MoveNext"]());return 0|(0!==t?t:o?1:i?-1:0)}finally{n.Dispose()}}finally{r.Dispose()}}(((e,t)=>{const r=0|n.comparer.Compare(e[0],t[0]);return 0|(0!==r?r:$(e[1],t[1]))}),n,e);throw new Error("not comparable\\nParameter name: obj")}"System.Collections.Generic.ICollection`1.Add2B595"(e){throw new Error("Map cannot be mutated")}"System.Collections.Generic.ICollection`1.Clear"(){throw new Error("Map cannot be mutated")}"System.Collections.Generic.ICollection`1.Remove2B595"(e){throw new Error("Map cannot be mutated")}"System.Collections.Generic.ICollection`1.Contains2B595"(e){return!!As(this,e[0])&&T(ks(this,e[0]),e[1])}"System.Collections.Generic.ICollection`1.CopyToZ2E171D71"(e,n){!function(e,n,t){let r=0|t;vs(((e,t)=>{n[r]=[e,t],r=r+1|0}),e)}(this.tree,e,n)}"System.Collections.Generic.ICollection`1.get_IsReadOnly"(){return!0}"System.Collections.Generic.ICollection`1.get_Count"(){return 0|Cs(this)}"System.Collections.Generic.IReadOnlyCollection`1.get_Count"(){return 0|Cs(this)}get size(){return 0|Cs(this)}clear(){throw new Error("Map cannot be mutated")}delete(e){throw new Error("Map cannot be mutated")}entries(){return Io((e=>[e[0],e[1]]),this)}get(e){return ks(this,e)}has(e){return As(this,e)}keys(){return Io((e=>e[0]),this)}set(e,n){throw new Error("Map cannot be mutated")}values(){return Io((e=>e[1]),this)}forEach(e,n){const t=this;wo((n=>{e(n[1],n[0],t)}),t)}}function Is(e,n){return new $s(e,n)}function ks(e,n){return function(e,n,t){const r=function(e,n,t){e:for(;;){const r=e,o=n,i=t;if(null!=i){const s=i,a=0|r.Compare(o,is(s));if(0===a)return Ln(ss(s));if(s instanceof as){e=r,n=o,t=a<0?cs(s):ds(s);continue e}return}return}}(e,n,t);if(null==r)throw new Error;return On(r)}(e.comparer,n,e.tree)}function Cs(e){return fs(e.tree)}function As(e,n){return function(e,n,t){e:for(;;){const r=e,o=n,i=t;if(null!=i){const s=i,a=0|r.Compare(o,is(s));if(s instanceof as){if(a<0){e=r,n=o,t=cs(s);continue e}if(0===a)return!0;e=r,n=o,t=ds(s);continue e}return 0===a}return!1}}(e.comparer,n,e.tree)}function Ls(e,n){return ks(n,e)}function Os(e,n){return As(n,e)}function _s(e){const n=[];return Ms(((e,t)=>(n.push(t),t)),e),ut(n)}function Ps(e){return mt((e=>_s(e)),e)}function Ns(e,n,t,r){const o=13===r.tag?e:e+(c=Jr(r),d=En("",gt((e=>fi(e)),vi(In(c,"`")))),Array.from(Io((e=>Qr(e)?e:"_"),d.split(""))).join("")),i=e=>Ns(o,n,t,e),s=e=>new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,gt(i,e.Types),e.HelperLines,e.Attributes),a=e=>new _r(e.Kind,e.FileName,e.ModuleName,gt(s,e.Modules)),l=e=>{const n=t(o,new kr(3,new Vt(e.Name,e.Optional,e.ParamArray,i(e.Type))));return 3===n.tag?n.fields[0]:gn(pn("param must be mapped to param"))};var c,d;let u;if(n(r))switch(r.tag){case 21:u=new kr(21,new Pt(gt(i,r.fields[0].Members)));break;case 2:{const e=r.fields[0];u=new kr(2,new nr(e.Attributes,e.Comments,e.Kind,Pn(l,e.Index),e.Name,e.Option,i(e.Type),e.Accessor,e.IsStatic,e.Accessibility));break}case 3:{const e=r.fields[0];u=new kr(3,new Vt(e.Name,e.Optional,e.ParamArray,i(e.Type)));break}case 4:u=new kr(4,i(r.fields[0]));break;case 8:{const e=r.fields[0];u=new kr(8,new Zt(e.Attributes,e.Comments,e.Kind,e.IsStatic,e.Name,gt(i,e.TypeParameters),gt(l,e.Params),i(e.ReturnType),e.Accessibility));break}case 9:{const e=r.fields[0];u=new kr(9,new ir(e.Option,gt(i,e.Types)));break}case 10:{const e=r.fields[0];u=new kr(10,new ar(e.Attributes,e.Comments,e.Name,i(e.Type),gt(i,e.TypeParameters)));break}case 11:{const e=r.fields[0];u=new kr(11,new rr(i(e.Type),gt(i,e.TypeParameters)));break}case 12:{const e=r.fields[0];u=new kr(12,new dr(gt(i,e.Types),e.Kind));break}case 13:u=new kr(13,s(r.fields[0]));break;case 14:u=new kr(14,a(r.fields[0]));break;case 15:{const e=r.fields[0];u=new kr(15,new Nr(e.Namespace,e.Opens,gt(a,e.Files),e.AbbrevTypes));break}case 16:{const e=r.fields[0];u=new kr(16,new vr(e.Attributes,e.Comments,e.Export,e.HasDeclare,e.Name,i(e.Type),e.IsConst,e.IsStatic,e.Accessibility));break}case 18:case 1:case 7:case 6:case 5:case 17:case 19:case 20:u=r;break;case 22:{const e=r.fields[0];u=new kr(22,new Rt(e.Name,Pn(i,e.Constraint),Pn(i,e.Default)));break}case 23:u=new kr(23,new xr(i(r.fields[0].Type)));break;default:{const e=r.fields[0];u=new kr(0,new Ot(e.Attributes,e.Comments,e.IsStatic,e.IsClass,e.Name,e.FullName,gt(i,e.TypeParameters),gt(i,e.Inherits),gt(i,e.Members),e.Accessibility))}}else u=r;return n(u)?t(o,u):u}function Rs(e,n,t){return Ns(e,(e=>!0),n,t)}function Ds(e,n,t){return new _r(t.Kind,t.FileName,t.ModuleName,St((e=>qr(e)),gt((t=>Ns("",e,n,t)),gt((e=>new kr(13,e)),t.Modules))))}function Ms(e,n){return Ds((e=>!0),e,n)}function Hs(e){const n=new Map([]),t=[],r=a(e);try{for(;r["System.Collections.IEnumerator.MoveNext"]();){const e=r["System.Collections.Generic.IEnumerator`1.get_Current"]();if(0===e.tag){const r=e.fields[0];if(n.has(r.Name)){const e=0|Li(n,r.Name),o=t[e];if(0===o.tag){const n=o.fields[0];t[e]=new kr(0,new Ot(n.Attributes,n.Comments,n.IsStatic,n.IsClass,n.Name,n.FullName,n.TypeParameters,qi(ft(n.Inherits,r.Inherits),{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)}),ft(n.Members,r.Members),n.Accessibility))}}else t.push(e),Ai(n,r.Name,t.length-1)}else t.push(e)}}finally{r.Dispose()}return ut(t)}function Fs(e){const n=new Map([]),t=[],r=a(e);try{for(;r["System.Collections.IEnumerator.MoveNext"]();){const e=r["System.Collections.Generic.IEnumerator`1.get_Current"]();if(13===e.tag){const r=e.fields[0],o=new Ar(r.Comments,r.HasDeclare,r.IsNamespace,r.Name,Fs(Hs(r.Types)),r.HelperLines,r.Attributes);if(n.has(r.Name)){const e=0|Li(n,r.Name),i=On(qr(t[e]));t[e]=new kr(13,new Ar(i.Comments,i.HasDeclare,i.IsNamespace,i.Name,Fs(Hs(ft(i.Types,o.Types))),i.HelperLines,i.Attributes))}else t.push(new kr(13,o)),Ai(n,o.Name,t.length-1)}else t.push(e)}}finally{r.Dispose()}return ut(t)}function Us(e){return new _r(e.Kind,e.FileName,e.ModuleName,St((e=>qr(e)),Fs(gt((e=>new kr(13,e)),ut(e.Modules)))))}$s.empty=Is(ro(),void 0);const Bs=oi(dt(["node","vscode"]),{Compare:(e,n)=>E(e,n)});function js(e,n){let t,r;mn(pn("createIExportsModule %A, %s"))(e)(n.Name);const o=[],i=[],s=[],l=[],c=[],d=new Oi([],{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)}),u=new Set([]);at((e=>{18===e.tag&&Ci(e.fields[0],u)}),n.Types),at((t=>{let r,c;switch(t.tag){case 13:{const o=js(""===n.Name?e:ft(e,(r=$n(n.Name,"'",""),c=ui(r),1===c.tag?Tt((e=>"."!==e),c.fields[0]):Qn(r))),t.fields[0]),i=a(o[1]);try{for(;i["System.Collections.IEnumerator.MoveNext"]();){const e=i["System.Collections.Generic.IEnumerator`1.get_Current"]();null!=e.Export?Ci(e,d):s.push(new kr(16,e))}}finally{i.Dispose()}l.push(new kr(13,o[0]));break}case 16:{const r=t.fields[0];if(r.HasDeclare)if(""===n.Name){const n=new kr(16,new vr(r.Attributes,r.Comments,new br(ti(Bs,xt(0,e)),0===function(...e){switch(e.length){case 2:return dn(e[0],e[1],!1);case 3:return dn(e[0],e[1],e[2]);case 4:return dn(e[0],e[1],!0===e[2]);case 5:return dn(e[0].substr(e[1],e[4]),e[2].substr(e[3],e[4]),!1);case 6:return dn(e[0].substr(e[1],e[4]),e[2].substr(e[3],e[4]),e[5]);case 7:return dn(e[0].substr(e[1],e[4]),e[2].substr(e[3],e[4]),!0===e[5]);default:throw new Error("String.compare: Unsupported number of parameters")}}(r.Name,xt(0,e),!0)?"*":r.Name,xt(0,e)),r.HasDeclare,r.Name,r.Type,r.IsConst,r.IsStatic,r.Accessibility));i.push(n)}else null!=(u=r).Export&&On(u.Export).IsGlobal?i.push(t):o.push(t);else o.push(t);break}case 8:o.push(t);break;case 0:{const e=t.fields[0];if(e.IsStatic){const n=new kr(2,new nr(Zn(),e.Comments,new Qt(0),void 0,$n(e.Name,"Static",""),!1,Gr(e.Name),new er(0),!1,void 0));o.push(n)}l.push(t);break}default:l.push(t)}var u}),n.Types);const p=ti(Bs,xt(0,e))?Ct(1,void 0,e):e,f=0===nt(p)?"*":$n(n.Name,"'",""),m=0===nt(p)?$n(n.Name,"'",""):En("/",p);if(o.length>0){const e=Eo((e=>to(e,0)),n.Name.split(""))?n.Name.toLocaleLowerCase():mi(n.Name);if(n.HasDeclare){if(!n.IsNamespace){const r=new vr(Zn(),n.Comments,new br(!1,"*",m),!0,e,Gr((t=xi(n.Name),hn(pn("%s.IExports"))(t))),!0,!1,void 0);c.push(r)}}else{const t=new vr(Zn(),n.Comments,new br(!1,f,m),!0,e,Gr((r=xi(n.Name),hn(pn("%s.IExports"))(r))),!0,!1,void 0);c.push(t)}}const h=0===o.length?Zn():Qn(new kr(0,new Ot(Zn(),Zn(),!1,!1,"IExports","IExports",Zn(),Zn(),ut(o),void 0))),g=ii(Io((e=>Jr(e)),i),{Compare:(e,n)=>E(e,n)});return at((e=>{let n;if(13===e.tag){const t=e.fields[0];!ti(g,t.Name)&&u.has(t.Name)&&Ci(new vr(Zn(),t.Comments,new br(!1,"*",m),!0,mi(t.Name),Gr((n=xi(t.Name),hn(pn("%s.IExports"))(n))),!0,!1,void 0),d)}}),n.Types),[new Ar(n.Comments,n.HasDeclare,n.IsNamespace,n.Name,ft(gt((e=>new kr(16,e)),ut(d)),ft(ut(i),ft(ut([]),ft(ut(s),ft(h,ut(l)))))),n.HelperLines,n.Attributes),ut(c)]}function Gs(e,n,t){if(0===nt(n))return t;{const r=oi(gt((e=>e.Name),St((e=>zr(e)),n)),{Compare:(e,n)=>E(e,n)});let o;const i=hn(pn("'%s"));return o=e=>i(e),Rs(e,((e,n)=>{let t,i;switch(7===n.tag&&ti(r,n.fields[0].Name)?(t=0,i=n.fields[0]):t=1,t){case 0:return new kr(7,new Sr(o(i.Name),i.FullName));case 1:{let e,t;switch(22===n.tag&&ti(r,n.fields[0].Name)?(e=0,t=n.fields[0]):e=1,e){case 0:return new kr(22,new Rt(o(t.Name),t.Constraint,t.Default));case 1:return n}}}}),t)}}function Ws(e){return Ms(((e,n)=>{if(13===n.tag){const e=n.fields[0],t=vt((e=>{let n;switch(n=10===e.tag&&"float"===e.fields[0].Name&&7===e.fields[0].Type.tag&&"float"===e.fields[0].Type.fields[0].Name&&"float"===e.fields[0].Type.fields[0].FullName?0:1,n){case 0:return!0;case 1:return!1}}),e.Types);return null==t?n:new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,bo(function(e,n,t){return mo((()=>{const r=new Oi(e,t);return xo((e=>Ci(e,r)),n)}))}([t],e.Types,{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)})),e.HelperLines,e.Attributes))}return n}),e)}const qs=function(e){const n=ro();return Is(n,ys(n,e))}(dt([["Array","type Array<'T> = System.Collections.Generic.IList<'T>"],["ReadonlyArray","type ReadonlyArray<'T> = System.Collections.Generic.IReadOnlyList<'T>"],["ReadonlySet","type ReadonlySet<'T> = Set<'T>"],["ReadonlyMap","type ReadonlyMap<'K, 'V> = Map<'K, 'V>"],["RegExp","type RegExp = System.Text.RegularExpressions.Regex"],["Error","type Error = System.Exception"],["Function","type Function = System.Action"],["Symbol","type Symbol = obj"],["TemplateStringsArray","type TemplateStringsArray = System.Collections.Generic.IReadOnlyList"],["ArrayLike","type ArrayLike<'T> = System.Collections.Generic.IList<'T>"],["PromiseLike","type PromiseLike<'T> = Fable.Core.JS.Promise<'T>"]]));function zs(e){const n=qi(St((e=>function(e){return 7===e.tag?e.fields[0]:void 0}(e)),Ps(e.Files)),{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)}),t=$t((e=>0===e.Name.indexOf("HTML")),n),r=function(e){return $t((e=>function(e){return 23===e.tag}(e)),Ps(e.Files))?new Nr(e.Namespace,e.Opens,e.Files,Xn("[] type KeyOf<'T> = Key of string",e.AbbrevTypes)):e}(new Nr(e.Namespace,e.Opens,e.Files,ft((o=qi(gt((e=>Ls(e.Name,qs)),Tt((e=>Os(e.Name,qs)),n)),{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)}),i={Compare:(e,n)=>E(e,n)},function(e,n){const t=ot(n);return t.sort(e),dt(t)}(((e,n)=>i.Compare(e,n)),o)),e.AbbrevTypes)));var o,i;return t?new Nr(r.Namespace,ft(r.Opens,Qn("Browser.Types")),gt((e=>Ms(((e,n)=>{if(13===n.tag){const e=n.fields[0];return new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,e.Types,gt((e=>$n(e,"Option.map","Microsoft.FSharp.Core.Option.map")),e.HelperLines),e.Attributes))}return n}),e)),r.Files),r.AbbrevTypes):r}const Ks=oi(dt(["string","float","bool","ReadonlySet","ReadonlyMap","Function"]),{Compare:(e,n)=>E(e,n)});function Vs(e){return Ms(((e,n)=>{if(0===n.tag){const e=n.fields[0],t=oi(gt((e=>e[0]),Tt((e=>nt(e[1])>1),bo(Io((e=>[e[0],bo(e[1])]),function(e,n,t){return mo((()=>{const r=new Hi([],t),o=[],i=a(n);try{for(;i["System.Collections.IEnumerator.MoveNext"]();){const n=i["System.Collections.Generic.IEnumerator`1.get_Current"](),t=e(n);let s,a=null;s=[ki(r,t,new P((()=>a),(e=>{a=e}))),a],s[0]?s[1].push(n):(Ai(r,t,[n]),o.push(t))}}finally{i.Dispose()}return Io((e=>[e,Li(r,e)]),o)}))}((e=>e.Name),Tt((e=>!T(e.Accessor,new er(2))),St((e=>function(e){return 2===e.tag?e.fields[0]:void 0}(e)),e.Members)),{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)}))))),{Compare:(e,n)=>E(e,n)});return null==ei(t)?new kr(0,e):new kr(0,new Ot(e.Attributes,e.Comments,e.IsStatic,e.IsClass,e.Name,e.FullName,e.TypeParameters,e.Inherits,St((e=>{if(2!==e.tag)return e;{const n=e.fields[0];if(!ri(n.Name,t))return new kr(2,n);switch(n.Accessor.tag){case 0:return new kr(2,new nr(n.Attributes,n.Comments,n.Kind,n.Index,n.Name,n.Option,n.Type,new er(2),n.IsStatic,n.Accessibility));case 1:default:return}}}),e.Members),e.Accessibility))}return n}),e)}function Js(e,n,t){return function(e,n,t,r,o=0){if("string"==typeof e){const t=e;e=tn(n,null!=r?r:0),n=t,r=void 0}if("function"==typeof t)return r=null==r?-1:r,n.substring(0,o)+n.substring(o).replace(e,(function(){let e=arguments[0];if(r){r--;const n=[],o=arguments.length,i="string"!=typeof arguments[o-1];let s=i?o-3:o-2;for(let e=0;e"$&")).replace(/\${([^}]+)}/g,"$<$1>"),null!=r){let i;const s=n.substring(o),a=sn(e,s),l=sn.length>r?(i=a[r-1],s.substring(0,i.index+i[0].length)):s;return n.substring(0,o)+l.replace(e,t)+n.substring(o+l.length)}return n.replace(e,t)}(e,t,(e=>n(e)))}function Ys(e){return e.indexOf("://")>=0}const Zs=tn("\\{\\@link (?[^ \\|\\}]+)(?:[ \\|](?[^\\}]*))?\\}");function Xs(e,n){if(null!=n){const t=n.groups&&n.groups[e];return null!=t?t||"":void 0}}function Qs(e,n){return Nn((e=>""===e?void 0:e),Xs(e,n))}function ea(e,n){return On(Xs(e,n))}function na(e,n){return Qs(e,n)}function ta(e){return Ys(e)?e:$n($n(0===e.indexOf("#")||0===e.indexOf("~")?Cn(e,1):e,"#","."),"~",".")}const ra=tn(hn(pn("(?%s)"))("`(?[^`]*)`")),oa=tn(En("|",[hn(pn("(?%s)"))("\\[(?[^\\)]*)\\]\\((?[^\\]]*)\\)"),hn(pn("(?%s)"))("\\{\\@link (?[^ \\|\\}]+)(?:[ \\|](?[^\\}]*))?\\}"),hn(pn("(?%s)"))("`(?[^`]*)`"),hn(pn("(?%s)"))("(?\\w+\\:\\/\\/\\S+)")]));function ia(e,n){const t=ta(e);let r;const o=Ys(t)?"h":"c";if(r=hn(pn('{if(null!=na("mdInlineCode",e)){const n=ea("mdInlineCode_code",e);return hn(pn("%s"))(n)}return e[0]}),n);return hn(pn("%s>%s"))(r)(e)}return hn(pn("%s />"))(r)}const sa=tn("^\\s*(?:\\{(?[^\\}]*)\\})(?.*)$"),aa=tn("^\\s*(?\\w+)\\s*(?:[-:])?\\s*(?.*)$"),la=tn("^\\s*((?\\{\\@link (?[^ \\|\\}]+)(?:[ \\|](?[^\\}]*))?\\})|(?\\[(?[^\\)]*)\\]\\((?[^\\]]*)\\))|(?[^\\s]+))\\s*(?.*)$");function ca(e){const n=on(la,e);if(null!=n){if(null!=na("jsDocLink",n)){const e=[Qs("jsDocLink_title",n),ea("jsDocLink_link",n)],t=Qs("description",n);return[ta(e[1]),e[0],t]}if(null!=na("mdLink",n)){const e=[ea("mdLink_title",n),ea("mdLink_link",n)],t=Qs("description",n);return[ta(e[1]),e[0],t]}{const e=na("path",n);if(null!=e){const t=e,r=Qs("description",n);return[ta(t),void 0,r]}return}}}function da(e){return $n($n($n(e,"&","&"),"<","<"),">",">")}function ua(e){return new Zr(0,void 0)}function pa(e){let n,t,r,o,i,s;switch(et(e)?o=1:0===kn(tt(e)).indexOf("```")?(o=0,i=tt(e),s=rt(e)):o=1,o){case 0:{let e;const o=yt((e=>0===kn(e).indexOf("```")),s);if(null!=o){const n=function(e,n){if(e<0)throw new Error(Bn+"\\nParameter name: index");if(e>Vn(n))throw new Error(jn+"\\nParameter name: index");return[kt(e,n),It(e,n)]}(o,s);e=[n[0],It(1,n[1])]}else e=[s,Zn()];const a=e[0];return[0===ua().tag?(t=Cn(kn(i),3).trim(),n=""===t?void 0:t,ft(Xn(null!=n?(r=n,hn(pn(''))(r)):"",a),Qn(""))):ft(Xn(i,a),Qn("```")),e[1]]}case 1:return}}function fa(e){const n=e=>((e,n)=>{e:for(;;){const r=e,o=n;if(et(o))return r;{const i=pa(o);if(null!=i){const t=i[0],o=i[1];e=ft(r,t),n=o;continue e}if(et(o))throw new Error("Match failure");e=ft(r,(t=tt(o),1===ua().tag?Qn(function(e){return mn(pn("Transforming line %s"))(e),Js(Zs,(e=>{const n=ea("jsDocLink_link",e),t=Qs("jsDocLink_title",e);if(null==t)return n;{const e=t;return hn(pn("[%s](%s)"))(e)(n)}}),e)}(t)):Qn(function(e){return Js(oa,(e=>{if(null!=na("mdLink",e)){const n=[ea("mdLink_title",e),ea("mdLink_link",e)];return ia(n[1],n[0])}if(null!=na("jsDocLink",e)){const n=[Qs("jsDocLink_title",e),ea("jsDocLink_link",e)];return ia(n[1],n[0])}if(null!=na("mdInlineCode",e)){const n=ea("mdInlineCode_code",e);return hn(pn("%s"))(n)}return null!=na("url",e)?ia(ea("url_link",e),void 0):e[0]}),e)}(t)))),n=rt(o);continue e}}var t})(Zn(),e);return gt((e=>{switch(e.tag){case 1:return new zt(1,new Bt(e.fields[0].Name,n(e.fields[0].Content)));case 2:return new zt(2,new Bt(e.fields[0].Name,n(e.fields[0].Content)));case 3:return new zt(3,n(e.fields[0]));case 4:return new zt(4,n(e.fields[0]));case 5:{const t=e.fields[0];return new zt(5,new Wt(t.Type,t.Target,n(e.fields[0].Content)))}case 6:return new zt(6,n(e.fields[0]));case 7:return new zt(7,new qt(e.fields[0].Type,n(e.fields[0].Content)));case 8:return new zt(8,n(e.fields[0]));case 9:return new zt(9,n(e.fields[0]));case 10:return new zt(10,new Bt(e.fields[0].Name,n(e.fields[0].Content)));case 11:case 12:return e;default:return new zt(0,n(e.fields[0]))}}),e)}function ma(e){if(0===ua().tag){const n=e=>gt((e=>da(e)),e);return gt((e=>{switch(e.tag){case 1:{const t=e.fields[0];return new zt(1,new Bt(t.Name,n(t.Content)))}case 2:{const t=e.fields[0];return new zt(2,new Bt(t.Name,n(t.Content)))}case 3:return new zt(3,n(e.fields[0]));case 4:return new zt(4,n(e.fields[0]));case 5:{const t=e.fields[0];return new zt(5,new Wt(t.Type,da(t.Target),n(t.Content)))}case 6:return new zt(6,n(e.fields[0]));case 7:{const t=e.fields[0];return new zt(7,new qt(Pn((e=>da(e)),t.Type),n(t.Content)))}case 8:return new zt(8,n(e.fields[0]));case 9:return new zt(9,n(e.fields[0]));case 10:{const t=e.fields[0];return new zt(10,new Bt(t.Name,n(t.Content)))}case 11:case 12:return e;default:return new zt(0,n(e.fields[0]))}}),e)}return e}function ha(e){const n=e=>{const n=function(e){const n=e=>{const n=function(e,n){for(;;){const t=e,r=n;if(Kn(r))return r;if(!t(Jn(r)))return r;e=t,n=Yn(r)}}((e=>Sn(e)),e);return et(n)?void 0:[tt(n),rt(n)]},t=(e,n)=>null==n?e:Xn(On(n),e);return St((e=>{let r,o,i,s,a,l,c,d,u,p,f,m,h,g;if(10===e.tag)"throws"===e.fields[0].Name?(d=0,u=e.fields[0].Content):"typeparam"===e.fields[0].Name?(d=1,p=e.fields[0].Content):"see"===e.fields[0].Name?(d=2,f=e.fields[0].Content):d=4;else if(1===e.tag){const t=n(e.fields[0].Content);null!=t?(d=3,m=t[0],h=t[1],g=e.fields[0]):d=4}else d=4;switch(d){case 0:{const e=n(u);if(null!=e){const n=e[0],i=e[1];return new zt(7,(r=function(e){const n=on(sa,e);return null!=n?[ea("type",n),Qs("description",n)]:void 0}(n),null==r?new qt(void 0,u):(o=r[1],new qt(r[0],t(i,o)))))}return}case 1:{const e=n(p);if(null!=e){const n=e[0],r=e[1],o=function(e){const n=on(aa,e);return null!=n?[ea("name",n),Qs("description",n)]:void 0}(n);if(null!=o){const e=o[1];return new zt(2,new Bt(o[0],t(r,e)))}return}return}case 2:{const e=n(f);if(null!=e){const n=e[0],t=e[1];console.log(Ln(ca(n)));const r=ca(n);if(null!=r){const e=r[1],n=r[0],o=r[2];return new zt(5,new Wt(Ys(n)?new Gt(0):new Gt(1),n,(i=[e,o],null==i[0]?null==i[1]?t:(s=i[1],Xn(s,t)):null==i[1]?(a=i[0],Xn(a,t)):(l=i[1],c=i[0],Xn(hn(pn("%s %s"))(c)(l),t)))))}return}return}case 3:if(0===m.indexOf("-")||0===m.indexOf(":")){const e=kn(Cn(m,1)),t=Sn(e)?null!=n(h)?h:void 0:Xn(e,h);return null==t?void 0:new zt(1,new Bt(g.Name,t))}return new zt(1,g);case 4:return e}}),e)}(function(e){const n=St((e=>function(e){return 0===e.tag?e.fields[0]:void 0}(e)),e);return et(n)?e:et(rt(n))?Xn(new zt(0,tt(n)),Tt((e=>!Fr(e)),e)):Xn(new zt(0,function(e,n){if(Kn(n))throw new Error("List was empty");return it(e,tt(n),rt(n))}(((e,n)=>ft(e,Xn("",n))),n)),Tt((e=>!Fr(e)),e))}(e));if(null==Ur(n))return fa(ma(n));{const e=fa(n),t=Ur(e);let r;switch(r=null!=t&&wt((e=>!Br(e)),t)?0:1,r){case 0:return e;case 1:return fa(ma(n))}}};return Ms(((e,t)=>{switch(t.tag){case 0:{const e=t.fields[0];return new kr(0,new Ot(e.Attributes,n(e.Comments),e.IsStatic,e.IsClass,e.Name,e.FullName,e.TypeParameters,e.Inherits,e.Members,e.Accessibility))}case 8:{const e=t.fields[0];return new kr(8,new Zt(e.Attributes,n(e.Comments),e.Kind,e.IsStatic,e.Name,e.TypeParameters,e.Params,e.ReturnType,e.Accessibility))}case 1:{const e=t.fields[0];return new kr(1,new Ft(e.Attributes,n(e.Comments),e.Name,gt((e=>new Ht(e.Attributes,n(e.Comments),e.Name,e.Type,e.Value)),e.Cases)))}case 2:{const e=t.fields[0];return new kr(2,new nr(e.Attributes,n(e.Comments),e.Kind,e.Index,e.Name,e.Option,e.Type,e.Accessor,e.IsStatic,e.Accessibility))}case 10:{const e=t.fields[0];return new kr(10,new ar(e.Attributes,n(e.Comments),e.Name,e.Type,e.TypeParameters))}case 16:{const e=t.fields[0];return new kr(16,new vr(e.Attributes,n(e.Comments),e.Export,e.HasDeclare,e.Name,e.Type,e.IsConst,e.IsStatic,e.Accessibility))}case 13:{const e=t.fields[0];return new kr(13,new Ar(n(e.Comments),e.HasDeclare,e.IsNamespace,e.Name,e.Types,e.HelperLines,e.Attributes))}default:return t}}),Ms(((e,n)=>function(e,n){const t=e=>function(e){let n;const t=e=>{let n;switch(n=10===e.tag&&"deprecated"===e.fields[0].Name?0:1,n){case 0:return!0;case 1:return!1}},r=Tt(t,e);var o;if(!et(r)){const i=Tt((e=>!t(e)),e),s=En("\n",gt((e=>$n(e,'"','\\"')),mt((e=>e),St((e=>{let n,t;switch(10===e.tag&&"deprecated"===e.fields[0].Name?(n=0,t=e.fields[0].Content):n=1,n){case 0:return t;case 1:return}}),r))));return[(n=new $r(void 0,"Obsolete",Zn()),new $r(n.Namespace,n.Name,Qn((o=hn(pn('"%s"'))(s),new wr(void 0,o))))),i]}}(e);let r,o,i,s;if(0===n.tag){const e=t(n.fields[0].Comments);null!=e?(r=0,o=e[0],i=e[1],s=n.fields[0]):r=1}else r=1;switch(r){case 0:return new kr(0,new Ot(Xn(Qn(o),s.Attributes),i,s.IsStatic,s.IsClass,s.Name,s.FullName,s.TypeParameters,s.Inherits,s.Members,s.Accessibility));case 1:{let e,r,o,i;if(8===n.tag){const s=t(n.fields[0].Comments);null!=s?(e=0,r=s[0],o=s[1],i=n.fields[0]):e=1}else e=1;switch(e){case 0:return new kr(8,new Zt(Xn(Qn(r),i.Attributes),o,i.Kind,i.IsStatic,i.Name,i.TypeParameters,i.Params,i.ReturnType,i.Accessibility));case 1:{let e,r,o,i;if(1===n.tag){const s=t(n.fields[0].Comments);null!=s?(e=0,r=s[0],o=s[1],i=n.fields[0]):e=1}else e=1;switch(e){case 0:return new kr(1,new Ft(Xn(Qn(r),i.Attributes),o,i.Name,gt((e=>{const n=t(e.Comments);if(null!=n){const t=n[0],r=n[1];return new Ht(Xn(Qn(t),e.Attributes),r,e.Name,e.Type,e.Value)}return e}),i.Cases)));case 1:{let e,r,o,i;if(2===n.tag){const s=t(n.fields[0].Comments);null!=s?(e=0,r=s[0],o=s[1],i=n.fields[0]):e=1}else e=1;switch(e){case 0:return new kr(2,new nr(Xn(Qn(r),i.Attributes),o,i.Kind,i.Index,i.Name,i.Option,i.Type,i.Accessor,i.IsStatic,i.Accessibility));case 1:{let e,r,o,i;if(10===n.tag){const s=t(n.fields[0].Comments);null!=s?(e=0,r=n.fields[0],o=s[0],i=s[1]):e=1}else e=1;switch(e){case 0:return new kr(10,new ar(Xn(Qn(o),r.Attributes),i,r.Name,r.Type,r.TypeParameters));case 1:{let e,r,o,i;if(16===n.tag){const s=t(n.fields[0].Comments);null!=s?(e=0,r=s[0],o=s[1],i=n.fields[0]):e=1}else e=1;switch(e){case 0:return new kr(16,new vr(Xn(Qn(r),i.Attributes),o,i.Export,i.HasDeclare,i.Name,i.Type,i.IsConst,i.IsStatic,i.Accessibility));case 1:{let e,r,o,i;if(13===n.tag){const s=t(n.fields[0].Comments);null!=s?(e=0,r=s[0],o=s[1],i=n.fields[0]):e=1}else e=1;switch(e){case 0:return new kr(13,new Ar(o,i.HasDeclare,i.IsNamespace,i.Name,i.Types,i.HelperLines,Xn(Qn(r),i.Attributes)));case 1:return n}}}}}}}}}}}}}}(0,n)),e))}function ga(e){if(null!=e){const n=e;return To((e=>118===e.kind),n)?new At(0):To((e=>117===e.kind),n)?new At(1):To((e=>116===e.kind),n)?new At(2):void 0}}function ba(e){return Ti(e.getText())}function va(e){const n=e;switch(0|n.kind){case 75:return e.getText();case 188:case 189:return;default:{const e=0|n.kind;return gn(pn("unknown Binding Name kind %A"))(e)}}}function ya(e,n){return null!=n?gt((n=>new kr(22,new Rt(n.name.getText(),Pn((n=>Oa(e,n)),n.constraint),Pn((n=>Oa(e,n)),n.default)))),ut(n)):Zn()}function xa(e,n){return null!=n?mt((n=>gt((n=>{const t=Oa(e,n);let r;const o=n.typeArguments;return r=null!=o?gt((n=>Oa(e,n)),ut(o)):Zn(),0===nt(r)?t:new kr(11,new rr(t,r))}),ut(n.types))),ut(n)):Zn()}function Ta(e){return dt($n($n(e,"\r\n","\n"),"\r","\n").split("\n"))}function Sa(e,n){return bo(mo((()=>{let t;return yo((t=function(e){if(0!==e.length){const n=mt((e=>Ta(e.text)),Tt((e=>"text"===e.kind),ut(e)));return et(n)?void 0:new zt(0,n)}}(e),null==t?mo((()=>new Array(0))):go(t)),mo((()=>function(e){return 0===e.length?Zn():gt((e=>function(e){const n=e=>{const t=0|e.kind;switch(t){case 75:return e.text;case 152:return(e=>{const t=e.right.text,r=n(e.left);return hn(pn("%s.%s"))(r)(t)})(e);default:return gn(pn("Invalid Syntaxkind: %A"))(t)}},t=e=>e.tagName.text.toLocaleLowerCase(),r=(e,n)=>n.kind===e?Ln(void 0):void 0,o=(e,n)=>{let o;switch(o=null!=r(304,n)&&Et(t(n),e,{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)})?0:1,o){case 0:return t(n);case 1:return}},i=_n(Pn((e=>Ta(e)),e.comment),Zn()),s=e=>new zt(10,new Bt(e,i));return null!=o(dt(["summary","description","desc"]),e)?new zt(0,i):null!=r(310,e)?new zt(1,new Bt(n(e.name),i)):null!=r(311,e)?new zt(3,i):null!=o(Qn("example"),e)?new zt(6,i):null!=o(dt(["remark","remarks","note"]),e)?new zt(4,i):null!=o(dt(["default","defaultvalue"]),e)?new zt(9,i):null!=o(Qn("version"),e)?new zt(8,i):null!=o(dt(["typeparam","tparam"]),e)?s("typeparam"):null!=o(Qn("see"),e)?s("see"):null!=o(dt(["throws","throw","exception"]),e)?s("throws"):null!=o(Qn("deprecated"),e)?s("deprecated"):null!=r(304,e)?new zt(11,new Bt(t(e),i)):new zt(12,i)}(e)),ut(e))}(n))))})))}function Ea(e,n){try{const t=e.getSignatureFromDeclaration(n);return null!=t?Sa(t.getDocumentationComment(e),wi.getJSDocTags(n)):Zn()}catch(e){return Zn()}}function wa(e,n){const t=e.getSymbolAtLocation(n);return null!=t?Sa(t.getDocumentationComment(e),wi.getJSDocTags(n.parent)):Zn()}function $a(e,n){return new Pt(gt((n=>Ra(e,n)),ut(n.members)))}function Ia(e,n){const t=e.getTypeFromTypeNode(n);return null!=t.symbol?e.getFullyQualifiedName(t.symbol):"error"}function ka(e,n){const t=e.getSymbolAtLocation(n);return null!=t?e.getFullyQualifiedName(t):""}function Ca(e,n){return null!=n&&To((n=>n.kind===e),n)}function Aa(e,n){let t,r;const o=n.typeArguments;if(null!=o){const i=o;return new kr(11,new rr((t=n.typeName.getText(),null==t&&(r=n.getText(),gn(pn("readTypeReference type name is null: %s"))(r)),new kr(7,new Sr(t,ka(e,n)))),gt((n=>Oa(e,n)),ut(i))))}return new kr(7,new Sr(n.getText(),ka(e,n)))}function La(e,n){return new Zt(Zn(),Zn(),new Yt(0),Ca(119,n.modifiers),Pn((e=>ba(e)),n.name),ya(e,n.typeParameters),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),Oa(e,n.type),ga(n.modifiers))}function Oa(e,n){e:for(;;){const t=e,r=n;switch(0|r.kind){case 99:return new kr(5);case 109:return Gr("unit");case 124:return new kr(9,new ir(!0,Qn(Gr("obj"))));case 127:return Gr("bool");case 136:return new kr(5);case 139:return Gr("float");case 140:return Gr("obj");case 142:return Gr("string");case 143:return Gr("Symbol");case 145:return Gr("obj");case 167:return Gr("bool");case 168:return Aa(t,r);case 169:return new kr(8,La(t,r));case 171:return Gr("obj");case 172:return new kr(21,$a(t,r));case 173:return new kr(4,Oa(t,r.elementType));case 174:return new kr(12,new dr(gt((e=>Oa(t,e)),ut(r.elementTypes)),new cr(1)));case 177:return _a(t,r);case 178:return new kr(12,new dr(gt((e=>Oa(t,e)),ut(r.types)),new cr(0)));case 181:e=t,n=r.type;continue e;case 182:return new kr(19);case 183:{const o=r;if(133===o.operator)return new kr(23,new xr(Oa(t,o.type)));e=t,n=o.type;continue e}case 184:e=t,n=r.objectType;continue e;case 185:return new kr(12,new dr(Qn(Gr("obj")),new cr(2)));case 186:{const e=r;return 10===e.literal.kind?new kr(17,Ti(e.literal.getText())):Gr("obj")}case 215:{const e=r;return new kr(7,new Sr(Da(e.expression),Ia(t,e)))}default:{const e=0|r.kind;return mn(pn("unsupported TypeNode kind: %A"))(e),new kr(5)}}break}}function _a(e,n){const t=ut(n.types),r=e=>145===e.kind||99===e.kind,o=e=>186===e.kind,i=$t(r,t),s=(e,n)=>new kr(1,new Ft(Zn(),Zn(),e,n)),a=(e,n)=>{let t,r,i;if(o(n)){const o=n;return T(o.literal.kind,e)?(t=o,r=Ti(t.literal.getText()),new Ht(Zn(),Zn(),r,(i=t.literal.kind,new Mt(8===i?0:10===i?1:2)),r)):void 0}},l=function(e,n){const t=[qn(),qn()],r=t[1],o=t[0],i=it(C(2,(n=>{const t=n[0],r=n[1];return n=>{let o,i;return e(n)?[(o=new Gn(n,void 0),t.tail=o,o),r]:[t,(i=new Gn(n,void 0),r.tail=i,i)]}})),[o,r],n),s=qn();i[0].tail=s;const a=qn();return i[1].tail=a,[Yn(o),Yn(r)]}(o,Tt((e=>!r(e)),t)),c=l[0],d=St(A(1,a,[10]),c),u=St(A(1,a,[8]),c),p=pt([gt((n=>Oa(e,n)),l[1]),et(d)?Zn():Qn(s("StringEnum",d)),et(u)?Zn():Qn(s("NumericEnum",u))]);let f;switch(f=et(p)?0:1===tt(p).tag&&et(rt(p))?1:2,f){case 0:return Gr("obj");case 1:return new kr(21,new Pt(p));case 2:return new kr(9,new ir(i,p))}}function Pa(e,n,t){const r=bt((e=>vt((e=>10===e.kind),ut(e.getChildren()))),ut(t.getChildren()));let o;if(null==r){const n=t.type;o=null==n?Gr("obj"):Oa(e,n)}else o=new kr(17,Ti(r.getText()));return new Vt(_n(va(t.name),"p"+p(n)),null!=t.questionToken,null!=t.dotDotDotToken,o)}function Na(e){return Ca(137,e)}function Ra(e,n){switch(0|n.kind){case 157:return new kr(2,function(e,n){let t;return new nr(Zn(),wa(e,n.name),new Qt(0),void 0,ba(n.name),null!=n.questionToken,(t=n.type,null!=t?Oa(e,t):new kr(6)),jr(Na(n.modifiers)),Ca(119,n.modifiers),ga(n.modifiers))}(e,n));case 158:return new kr(2,function(e,n){let t;return new nr(Zn(),wa(e,n.name),new Qt(0),void 0,ba(n.name),null!=n.questionToken,(t=n.type,null!=t?Oa(e,t):new kr(6)),jr(Na(n.modifiers)),Ca(119,n.modifiers),ga(n.modifiers))}(e,n));case 159:return new kr(8,function(e,n){let t;return new Zt(Zn(),Ea(e,n),new Yt(0),Ca(119,n.modifiers),ba(n.name),ya(e,n.typeParameters),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),(t=n.type,null==t?Gr("unit"):Oa(e,t)),ga(n.modifiers))}(e,n));case 160:return new kr(8,function(e,n){let t;return new Zt(Zn(),Ea(e,n),new Yt(0),Ca(119,n.modifiers),ba(n.name),ya(e,n.typeParameters),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),(t=n.type,null==t?Gr("unit"):Oa(e,t)),ga(n.modifiers))}(e,n));case 161:return new kr(8,function(e,n){return new Zt(Zn(),Ea(e,n),new Yt(1),!0,"Create",ya(e,n.typeParameters),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),new kr(19),ga(n.modifiers))}(e,n));case 162:return new kr(2,function(e,n){let t;return new nr(Zn(),wa(e,n.name),new Qt(0),void 0,ba(n.name),null!=n.questionToken,(t=n.type,null!=t?Oa(e,t):new kr(6)),new er(0),Ca(119,n.modifiers),ga(n.modifiers))}(e,n));case 163:return new kr(2,function(e,n){return new nr(Zn(),wa(e,n.name),new Qt(0),void 0,ba(n.name),null!=n.questionToken,1!==n.parameters.length?new kr(6):Pa(e,0,n.parameters[0]).Type,new er(1),Ca(119,n.modifiers),ga(n.modifiers))}(e,n));case 164:return new kr(8,function(e,n){let t;return new Zt(Zn(),Ea(e,n),new Yt(2),!1,"Invoke",Zn(),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),(t=n.type,null==t?Gr("unit"):Oa(e,t)),ga(n.modifiers))}(e,n));case 165:return new kr(8,function(e,n){return new Zt(Zn(),Ea(e,n),new Yt(1),!0,"Create",ya(e,n.typeParameters),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),new kr(19),ga(n.modifiers))}(e,n));case 166:return new kr(2,function(e,n){let t;const r=Pa(e,0,n.parameters[0]);return new nr(Zn(),Ea(e,n),new Qt(1),r,"Item",null!=n.questionToken,(t=n.type,null!=t?Oa(e,t):new kr(6)),jr(Na(n.modifiers)),Ca(119,n.modifiers),ga(n.modifiers))}(e,n));default:{const e=0|n.kind;return mn(pn("unsupported NamedDeclaration kind: %A"))(e),new kr(5)}}}function Da(e){switch(0|e.kind){case 75:case 193:return e.getText();default:{const n=0|e.kind;return mn(pn("readExpressionText kind not yet supported: %A"))(n),e.getText()}}}function Ma(e,n){switch(0|n.kind){case 224:return function(e,n){return gt((t=>new kr(16,new vr(Zn(),wa(e,t.name),void 0,!!Ca(129,n.modifiers)||Ca(88,n.modifiers),_n(va(t.name),"unsupported_pattern"),_n(Pn((n=>Oa(e,n)),t.type),Gr("obj")),0!=(2&(0|n.declarationList.flags)),Ca(119,t.modifiers),ga(n.modifiers)))),ut(n.declarationList.declarations))}(e,n);case 243:return Qn(new kr(8,function(e,n){let t;return new Zt(Zn(),Ea(e,n),new Yt(0),Ca(119,n.modifiers),Pn((e=>e.getText()),n.name),ya(e,n.typeParameters),ht(((n,t)=>Pa(e,n,t)),ut(n.parameters)),(t=n.type,null==t?Gr("unit"):Oa(e,t)),ga(n.modifiers))}(e,n)));case 244:return Qn(new kr(0,function(e,n){const t=ka(e,n),r=_n(Pn((n=>wa(e,n)),n.name),Zn());let o;const i=n.name;o=null!=i?i.getText():t;const s=xa(e,n.heritageClauses),a=gt((n=>Ra(e,n)),ut(n.members));return new Ot(Zn(),r,!1,!0,o,t,ya(e,n.typeParameters),s,a,ga(n.modifiers))}(e,n)));case 245:return Qn(new kr(0,function(e,n){const t=wa(e,n.name),r=n.name.getText(),o=ka(e,n),i=xa(e,n.heritageClauses),s=gt((n=>Ra(e,n)),ut(n.members));return new Ot(Zn(),t,!1,!1,r,o,ya(e,n.typeParameters),i,s,ga(n.modifiers))}(e,n)));case 246:return Qn(function(e,n){const t=Oa(e,n.type),r=n.name.getText(),o=()=>new kr(10,new ar(Zn(),wa(e,n.name),r,t,ya(e,n.typeParameters)));if(9===t.tag){const i=t.fields[0],s=St((e=>Wr(e)),i.Types);return nt(i.Types)===nt(s)?new kr(1,new Ft(Zn(),wa(e,n.name),r,gt((e=>new Ht(Zn(),Zn(),e,new Mt(1),void 0)),s))):o()}return o()}(e,n));case 247:return Qn(new kr(1,function(e,n){return new Ft(Zn(),wa(e,n.name),n.name.getText(),gt((n=>function(e,n){let t;const r=ba(n.name);let o;const i=n.initializer;if(null!=i){const e=i;switch(0|e.kind){case 8:o=[new Mt(0),e.text];break;case 10:o=[new Mt(1),e.text];break;case 206:{const n=e.getText();o=(t=0,[Y(n,511,!1,32,new P((()=>t),(e=>{t=e}))),t])[0]?[new Mt(0),n]:[new Mt(2),void 0];break}default:{const n=0|e.kind;o=gn(pn("EnumCase type not supported %A %A"))(n)(r)}}}else o=[new Mt(2),void 0];return new Ht(Zn(),wa(e,n.name),r,o[0],o[1])}(e,n)),ut(n.members)))}(e,n)));case 248:return Qn(new kr(13,Ha(e,n)));case 251:case 252:return Zn();case 253:return function(e){const n=Ti(e.moduleSpecifier.getText()),t=e.importClause;if(null!=t){const e=t.namedBindings;if(null!=e){const t=On(e);return null!=t.name?Qn(new kr(20,new hr(1,new mr(t.name.getText(),n,void 0)))):mt((e=>317===e.kind?St((e=>{let t;if(257===e.kind){const r=e;return new kr(20,new hr(0,new fr((t=r.name.text,new pr(Pn((e=>e.text),r.propertyName),t)),n,void 0)))}}),ut(e.getChildren())):Zn()),ut(t.getChildren()))}return Zn()}return Zn()}(n);case 258:return Qn(75===(t=n).expression.kind?new kr(18,Da(t.expression)):new kr(6));case 259:return Zn();default:{const e=0|n.kind;return mn(pn("unsupported Statement kind: %A"))(e),Zn()}}var t}function Ha(e,n){const t=[];var r;return r=n=>{switch(0|n.kind){case 10:case 75:case 88:case 129:break;case 248:{const r=new kr(13,Ha(e,n));t.push(r);break}case 249:at((e=>{t.push(e)}),mt((n=>Ma(e,n)),ut(n.statements)));break;default:{const e=0|n.kind;mn(pn("unknown kind in ModuleDeclaration: %A"))(e)}}},n.forEachChild((e=>{r(e)})),new Ar(wa(e,n.name),Ca(129,n.modifiers),To((e=>135===e.kind),n.getChildren()),Ti(n.name.getText()),ut(t),Zn(),Zn())}class Fa extends _{constructor(e,n){super(),this.FileName=e,this.SourceFile=n}}class Ua extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Node","Web"]}}function Ba(e){if(1===e.tag)return Qn(e.fields[0].FileName);{const n=e.fields[0];return 0===nt(n.Exports)?n.TsPaths:function(e,n){const t=e.TsPaths;let r,o;switch(et(t)?r=1:et(rt(t))?(r=0,o=tt(t)):r=1,r){case 0:return n(o);case 1:throw new Error("tspaths 's length must be 1 when with --exports option")}}(n,(e=>Tt((e=>!!xn(e,".d.ts")&&function(e,n){return $t((n=>e.indexOf(n)>=0),n)}(e,n.Exports)),ut(n.EnumerateFilesInSameDir(e)))))}}function ja(e,n){return ha(Ws(function(e){const n=new c((()=>ot(_s(e))));return Ms(((e,t)=>{let r,o,i,s,a;switch(3===t.tag&&t.fields[0].Optional?(s=0,a=t.fields[0]):s=1,s){case 0:{const e=a.Type;let s,l,c;switch(9===e.tag?e.fields[0].Option?et(e.fields[0].Types)?e.fields[0].Option?(s=1,c=e.fields[0]):s=2:et(rt(e.fields[0].Types))?(s=0,l=tt(e.fields[0].Types)):e.fields[0].Option?(s=1,c=e.fields[0]):s=2:e.fields[0].Option?(s=1,c=e.fields[0]):s=2:s=2,s){case 0:return new kr(3,new Vt(a.Name,a.Optional,a.ParamArray,l));case 1:return new kr(3,new Vt(a.Name,a.Optional,a.ParamArray,new kr(9,new ir(!1,c.Types))));case 2:{let s,l,c;switch(11===e.tag&&7===e.fields[0].Type.tag&&""===e.fields[0].Type.fields[0].FullName?et(e.fields[0].TypeParameters)?s=1:et(rt(e.fields[0].TypeParameters))?(r=function(e,n){const t=fo(n);try{let n;for(;null==n&&t["System.Collections.IEnumerator.MoveNext"]();){const r=t["System.Collections.Generic.IEnumerator`1.get_Current"]();e(r)&&(n=Ln(r))}return n}finally{t.Dispose()}}((n=>{let t;switch(t=10===n.tag&&n.fields[0].Name===e.fields[0].Type.fields[0].Name?0:1,t){case 0:return!0;case 1:return!1}}),n.Value),null!=r&&10===r.tag&&9===r.fields[0].Type.tag&&r.fields[0].Type.fields[0].Option&&!et(r.fields[0].Type.fields[0].Types)&&7===tt(r.fields[0].Type.fields[0].Types).tag&&et(rt(r.fields[0].Type.fields[0].Types))&&!et(r.fields[0].TypeParameters)&&22===tt(r.fields[0].TypeParameters).tag&&et(rt(r.fields[0].TypeParameters))&&tt(r.fields[0].Type.fields[0].Types).fields[0].Name===tt(r.fields[0].TypeParameters).fields[0].Name&&(o=tt(r.fields[0].TypeParameters).fields[0],i=tt(r.fields[0].Type.fields[0].Types).fields[0],1)?(s=0,l=e.fields[0].Type.fields[0].Name,c=tt(e.fields[0].TypeParameters)):s=1):s=1:s=1,s){case 0:return new kr(3,new Vt(a.Name,a.Optional,a.ParamArray,c));case 1:return t}}}}case 1:return t}}),e)}(function(e){return Ms(((e,n)=>{let t,r,o,i,s;return 13===n.tag?new kr(13,(t=new Hi([],{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)}),r=new Map([]),i=n.fields[0],s=Ns("",(e=>13!==e.tag||!!T(e.fields[0],i)),((e,n)=>{if(21===n.tag){let o;const i=n.fields[0],s=e;let a,l=null;if(a=[ki(t,i,new P((()=>l),(e=>{l=e}))),l],a[0])o=a[1];else{let e,n;if(r.has(s)){r.set(s,Li(r,s)+1);const e=0|Li(r,s);n=hn(pn("%s%i"))(s)(e)}else r.set(s,1),n=s;const a=new Oi([],{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)});Rs(s,((e,n)=>{let t;switch(t=7===n.tag&&0===n.fields[0].Name.indexOf("'")?0:1,t){case 0:return Ci(n,a),n;case 1:return n}}),new kr(21,i)),e=new Ot(Zn(),Zn(),!1,!1,n,n,bo(a),Zn(),i.Members,void 0),t.set(i,e),o=e}const c=o.TypeParameters;return et(c)?Gr(o.Name):new kr(11,new rr(Gr(o.Name),c))}return n}),new kr(13,i)),o=13===s.tag?s.fields[0]:gn(pn("Impossible: %A"))(s),new Ar(o.Comments,o.HasDeclare,o.IsNamespace,o.Name,ft(o.Types,bo(Io((e=>new kr(0,e[1])),t))),o.HelperLines,o.Attributes))):n}),Ms(((e,n)=>{if(13===n.tag){const e=n.fields[0],t=new Set(gt((e=>Jr(e)),e.Types)),r=e=>{e:for(;;){const n=fi(e);if(t.has(n)){const r=hn(pn("%s_"))(n);if(t.has(r)){e=r;continue e}return Ci(r,t),r}return Ci(n,t),n}};return new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,mt((e=>{let n;switch(e.tag){case 0:{const n=e.fields[0],t=[],o=(e,n)=>{const r=new Ot(Zn(),Zn(),!1,!1,e,e,Zn(),Zn(),n,void 0);t.push(new kr(0,r))};return ft(Qn(new kr(0,new Ot(n.Attributes,n.Comments,n.IsStatic,n.IsClass,n.Name,n.FullName,n.TypeParameters,n.Inherits,gt((e=>{let t,i,s,a;if(8===e.tag){const l=e.fields[0];return new kr(8,new Zt(l.Attributes,l.Comments,l.Kind,l.IsStatic,l.Name,l.TypeParameters,gt((e=>{let t,i,s,a;const c=e.Type;if(21===c.tag){let d;const u="IExports"===n.Name?"":$n(n.Name,"`",""),p=$n(On(l.Name),"`",""),f=$n(e.Name,"`","");return d=r("Create"===p?(t=fi(f),hn(pn("%s%s"))(u)(t)):p===f?(i=fi(f),hn(pn("%s%s"))(u)(i)):(s=fi(f),a=fi(p),hn(pn("%s%s%s"))(u)(a)(s))),o(d,c.fields[0].Members),new Vt(e.Name,e.Optional,e.ParamArray,Gr(d))}return e}),l.Params),(t=l.ReturnType,21===t.tag?(s="IExports"===n.Name?"":$n(n.Name,"`",""),i=r((a=fi($n(On(l.Name),"`","")),hn(pn("%s%sReturn"))(s)(a))),o(i,t.fields[0].Members),Gr(i)):t),l.Accessibility))}return e}),n.Members),n.Accessibility))),ut(t))}case 10:{const t=e.fields[0],r=t.Type;switch(r.tag){case 9:{const e=r.fields[0];return Qn(new kr(10,new ar(t.Attributes,t.Comments,t.Name,new kr(9,new ir(e.Option,(n=[],at((e=>{21===e.tag?Fn(e.fields[0].Members,n):n.push(e)}),e.Types),ut(n)))),t.TypeParameters)))}case 21:return Qn(new kr(0,new Ot(Zn(),t.Comments,!1,!1,t.Name,t.Name,t.TypeParameters,Zn(),r.fields[0].Members,void 0)));default:return Qn(e)}}default:return Qn(e)}}),e.Types),e.HelperLines,e.Attributes))}return n}),e))}(function(e){return Ms(((e,n)=>{let t,r;switch(2===n.tag&&n.fields[0].Option?(t=0,r=n.fields[0]):t=1,t){case 0:{const e=r.Type;let t,o;switch(9===e.tag&&e.fields[0].Option?(t=0,o=e.fields[0]):t=1,t){case 0:return new kr(2,new nr(r.Attributes,r.Comments,r.Kind,r.Index,r.Name,r.Option,new kr(9,new ir(!1,o.Types)),r.Accessor,r.IsStatic,r.Accessibility));case 1:return n}}case 1:return n}}),e)}(function(e){return Ms(((e,n)=>{if(0===n.tag){const e=n.fields[0],t=new Oi([],{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)});return new kr(0,new Ot(e.Attributes,e.Comments,e.IsStatic,e.IsClass,e.Name,e.FullName,e.TypeParameters,e.Inherits,mt((e=>{if(8===e.tag){const n=e.fields[0];return Ci(new Zt(n.Attributes,Zn(),n.Kind,n.IsStatic,n.Name,n.TypeParameters,n.Params,new kr(6),n.Accessibility),t)?Qn(e):Zn()}return Qn(e)}),e.Members),e.Accessibility))}return n}),e)}(function(e){return Ms(((e,n)=>{if(0===n.tag){const e=n.fields[0];return new kr(0,new Ot(e.Attributes,e.Comments,e.IsStatic,e.IsClass,e.Name,e.FullName,e.IsStatic?Zn():e.TypeParameters,e.Inherits,e.Members,e.Accessibility))}return n}),e)}(function(e){return Ms(((e,n)=>{switch(n.tag){case 0:case 10:return Gs(e,n.fields[0].TypeParameters,n);default:return n}}),e)}(function(e){return Ms(((e,n)=>8===n.tag?Gs(e,n.fields[0].TypeParameters,n):n),e)}(function(e,n){return 1===e.tag?Ms(((e,n)=>{let r,o;switch(n.tag){case 7:{const e=n.fields[0];return new kr(7,new Sr(function(e){if(ti(Ei,e))return e;{const n=e.split(".");if(1===n.length)return e;{const e=st(dt(n));return En(".",st(gt((e=>xi(e)),ft(Qn(tt(e)),rt(e)))))}}}(e.Name),e.FullName))}case 20:{const e=n.fields[0];return new kr(20,0===e.tag?(r=e.fields[0],new hr(0,new fr(r.ImportSpecifier,1===t.Kind.tag?r.SpecifiedModule:xi(r.SpecifiedModule),r.ResolvedModule))):(o=e.fields[0],new hr(1,new mr(xi(o.Module),xi(o.SpecifiedModule),o.ResolvedModule))))}default:return n}}),t=n):e.fields[0].FixNamespace(n);var t}(e,function(e){return Ms(((e,n)=>{switch(n.tag){case 7:{const e=n.fields[0];return new kr(7,new Sr(yi(e.Name),e.FullName))}case 3:{const e=n.fields[0];return new kr(3,new Vt(yi(e.Name),e.Optional,e.ParamArray,e.Type))}case 8:{const e=n.fields[0];return new kr(8,new Zt(e.Attributes,e.Comments,e.Kind,e.IsStatic,Pn((e=>yi(e)),e.Name),e.TypeParameters,e.Params,e.ReturnType,e.Accessibility))}case 2:{const e=n.fields[0];return new kr(2,new nr(e.Attributes,e.Comments,e.Kind,e.Index,Tn(t=e.Name)?"":ti(si,t)||ti(ai,t)||!hi(t)?hn(pn("``%s``"))(t):t,e.Option,e.Type,e.Accessor,e.IsStatic,e.Accessibility))}case 0:{const e=n.fields[0];return new kr(0,new Ot(e.Attributes,e.Comments,e.IsStatic,e.IsClass,yi(e.Name),e.FullName,e.TypeParameters,e.Inherits,e.Members,e.Accessibility))}case 13:{const e=n.fields[0];return new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,xi(e.Name),e.Types,e.HelperLines,e.Attributes))}case 16:{const e=n.fields[0];return new kr(16,new vr(e.Attributes,e.Comments,e.Export,e.HasDeclare,yi(e.Name),e.Type,e.IsConst,e.IsStatic,e.Accessibility))}case 10:{const e=n.fields[0];return new kr(10,new ar(e.Attributes,e.Comments,yi(e.Name),e.Type,e.TypeParameters))}default:return n}var t}),e)}(function(e){return Ms(((e,n)=>{if(9===n.tag){const e=n.fields[0],t=new Oi([],{Equals:(e,n)=>T(e,n),GetHashCode:e=>v(e)}),r=St((e=>t.has(e)?void 0:(Ci(e,t),e)),e.Types);return nt(r)>8?Gr("obj"):new kr(9,new ir(e.Option,r))}return n}),e)}(function(e){const n=[];Ms(((e,t)=>1===t.tag?(n.push(t.fields[0].Name),t):t),e);const t=ii(n,{Compare:(e,n)=>E(e,n)});return Ms(((e,n)=>{if(7===n.tag){const e=n.fields[0];if(e.Name.indexOf(".")>=0){const r=Cn(e.Name,0,e.Name.indexOf("."));return ti(t,r)?Gr(r):n}return n}return n}),e)}(function(e){return Ms(((e,n)=>{if(8===n.tag){const e=n.fields[0];if($t((e=>function(e){return 17===e.Type.tag}(e)),e.Params)){const n=[],t=[],r=[];let o;const i=On(e.Name);let s;o=hn(pn("$0.%s("))(i),n.push(o);const a=On(e.Name);s=hn(pn("%s"))(a),t.push(s);const l=new P(0);let c;lt(((o,i)=>{const s=Wr(i.Type);if(null!=s){const e=s;l.contents++;const r=hn(pn("'%s'"))(e);n.push(r);const o=hn(pn("_%s"))(e);t.push(o)}else{let e;const t=o+1-l.contents|0;e=hn(pn("$%d"))(t),n.push(e),r.push(i)}ojs(Qn(e.ModuleName),n)[0]),ut(e.Modules)))}(function(e){return Ms(((e,n)=>{if(13===n.tag){const e=n.fields[0];return new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,mt((e=>{if(0===e.tag){const t=e.fields[0];return $t((e=>Kr(e)),t.Members)?dt([new kr(0,new Ot(t.Attributes,t.Comments,t.IsStatic,t.IsClass,t.Name,t.FullName,t.TypeParameters,t.Inherits,(n=t,Tt((e=>!Kr(e)),n.Members)),t.Accessibility)),new kr(0,new Ot(t.Attributes,t.Comments,!0,t.IsClass,hn(pn("%sStatic"))(t.Name),t.FullName,t.TypeParameters,Zn(),Dr(t),t.Accessibility))]):Qn(e)}var n;return Qn(e)}),e.Types),e.HelperLines,e.Attributes))}return n}),e)}(function(e){return Ms(((e,n)=>{let t;if(7===n.tag){const e=n.fields[0];return new kr(7,new Sr((t=e.Name,"Date"===t?"DateTime":t),e.FullName))}return n}),e)}(function(e){return Ms(((e,n)=>8===n.tag?Rs(e,((e,n)=>{if(11===n.tag){const e=n.fields[0],t=e.Type;return 7===t.tag&&"ReadonlyArray"===t.fields[0].Name&&1===nt(e.TypeParameters)?new kr(4,xt(0,e.TypeParameters)):n}return n}),n):n),e)}(function(e){return Ms(((e,n)=>{if(11===n.tag){const e=n.fields[0],t=e.Type;return 7===t.tag&&"NodeArray"===t.fields[0].Name&&1===nt(e.TypeParameters)?new kr(4,xt(0,e.TypeParameters)):n}return n}),e)}(function(e){return Ms(((e,n)=>{if(0===n.tag){const t=n.fields[0];return new kr(0,new Ot(t.Attributes,t.Comments,t.IsStatic,t.IsClass,t.Name,t.FullName,t.TypeParameters,t.Inherits,gt((n=>Rs(e,((e,n)=>19===n.tag?new kr(11,new rr(Gr(t.Name),t.TypeParameters)):n),n)),t.Members),t.Accessibility))}return n}),e)}(function(e){return Ms(((e,n)=>{let t,r;switch(0===n.tag&&n.fields[0].IsClass?(t=0,r=n.fields[0]):t=1,t){case 0:return new kr(0,new Ot(r.Attributes,r.Comments,r.IsStatic,r.IsClass,r.Name,r.FullName,r.TypeParameters,r.Inherits,Tt((e=>!T(function(e){switch(e.tag){case 8:case 2:case 16:return e.fields[0].Accessibility;case 13:case 1:case 3:case 10:case 14:case 11:case 7:case 20:case 4:case 18:case 22:case 23:case 6:case 5:case 17:case 19:case 12:case 21:case 9:case 15:return;default:return e.fields[0].Accessibility}}(e),new At(2))),r.Members),r.Accessibility));case 1:return n}}),e)}(Vs(function(e){const n=[];Ms(((e,t)=>{if(0===t.tag){const e=t.fields[0];return e.IsClass&&Mr(e)?(n.push(e),t):t}return t}),e);const t=new Map(Io((e=>[e.FullName,e]),n));return Ms(((e,n)=>{if(0===n.tag){const e=n.fields[0];if(e.IsClass){if(Mr(e))return n;{const n=bt((e=>{const n=function(e){e:for(;;){const n=e;switch(n.tag){case 0:case 7:return n.fields[0].FullName;case 11:e=n.fields[0].Type;continue e;case 14:return n.fields[0].FileName;default:return Jr(n)}break}}(e);return t.has(n)?Li(t,n):void 0}),e.Inherits);return new kr(0,new Ot(e.Attributes,e.Comments,e.IsStatic,e.IsClass,e.Name,e.FullName,e.TypeParameters,e.Inherits,ft(null==n?Qn(new kr(8,new Zt(Zn(),Zn(),new Yt(1),!0,"Create",e.TypeParameters,Zn(),new kr(19),void 0))):Tt((e=>Vr(e)),n.Members),e.Members),e.Accessibility))}}return n}return n}),e)}(function(e){return new _r(e.Kind,e.FileName,e.ModuleName,gt((e=>{const n=[];return at((e=>{if(13===e.tag){const t=e.fields[0];"global"===t.Name?Fn(t.Types,n):n.push(e)}else n.push(e)}),e.Types),new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,ut(n),e.HelperLines,e.Attributes)}),e.Modules))}((t=function(e){const n=e=>{let t,r;switch(7===e.tag?t=0:11===e.tag?t=1:12===e.tag&&T(e.fields[0].Kind,new cr(0))?(t=2,r=e.fields[0]):t=3,t){case 0:case 1:return e;case 2:{const e=St(n,r.Types);return et(e)?void 0:new kr(12,new dr(e,r.Kind))}case 3:{let n;switch(n=12===e.tag&&T(e.fields[0].Kind,new cr(0))?0:1,n){case 0:return;case 1:return void e.tag}}}},t=e=>{let n;switch(n=7===e.tag&&ti(Ks,e.fields[0].Name)?0:1,n){case 0:return;case 1:{let n;switch(n=11===e.tag&&null==t(e.fields[0].Type)?0:1,n){case 0:return;case 1:{let n,r;switch(12===e.tag&&T(e.fields[0].Kind,new cr(0))?(n=0,r=e.fields[0]):n=1,n){case 0:{const e=St(t,r.Types);return et(e)?void 0:new kr(12,new dr(e,r.Kind))}case 1:return e}}}}}};return Ms(((e,r)=>{let o,i,s,a;switch(22===r.tag&&null!=r.fields[0].Constraint?(o=0,i=r.fields[0].Constraint,s=r.fields[0]):(o=1,a=r),o){case 0:return new kr(22,new Rt(s.Name,Nn(t,n(i)),s.Default));case 1:return a}}),e)}(function(e){let n;return Ms(((e,n)=>{let t,r;switch(22===n.tag&&null!=n.fields[0].Default?(t=0,r=n.fields[0]):t=1,t){case 0:return new kr(22,new Rt(r.Name,r.Constraint,void 0));case 1:return n}}),(n=(e,n,t,r)=>{const o=[];return lt(((i,s)=>{if(null!=s.Default){const s=new ar(e,n,t,new kr(11,new rr(Gr(t),ft(Ct(0,i-1,r),gt((e=>{let n,t;return n=e.Default,o=()=>Gr("obj"),null!=(r=null!=n?(t=n,12===t.tag?T(t.fields[0].Kind,new cr(0))||21===t.tag?void 0:t:21===t.tag?void 0:t):void 0)?On(r):o();var r,o}),St((e=>zr(e)),Ct(i,void 0,r)))))),Ct(0,i-1,r));o.push(s)}}),St((e=>zr(e)),r)),gt((e=>new kr(10,e)),ut(o))},Ms(((e,t)=>{let r;if(13===t.tag){const e=t.fields[0];return new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,(r=[],at((e=>{switch(e.tag){case 0:{const t=e.fields[0];Fn(n(t.Attributes,t.Comments,t.Name,t.TypeParameters),r),r.push(e);break}case 10:{const t=e.fields[0];Fn(n(t.Attributes,t.Comments,t.Name,t.TypeParameters),r),r.push(e);break}default:r.push(e)}}),e.Types),ut(r)),e.HelperLines,e.Attributes))}return t}),e)))}(function(e){const n=e=>{let n;const t=St((e=>zr(e)),e);n=it(C(2,(e=>{const n=e[0],t=e[1];return e=>{const r=e.Constraint;let o,i;switch(null!=r&&23===r.tag?(o=0,i=r.fields[0].Type):o=1,o){case 0:return[n,(s=e.Name,a=i,l=t,function(e,n,t){return Is(e.comparer,gs(e.comparer,n,t,e.tree))}(l,s,a))];case 1:return[Xn(e,n),t]}var s,a,l}})),[Zn(),$s.empty],t);const r=n[1];return null==r.tree?void 0:[gt((e=>new kr(22,e)),st(n[0])),r]},t=(e,n,t)=>Rs(e,((e,t)=>{let r,o;switch(7===t.tag&&Os(t.fields[0].Name,n)?(r=0,o=t.fields[0]):r=1,r){case 0:return new kr(23,new xr(Ls(o.Name,n)));case 1:return t}}),t);return Ms(((e,r)=>{switch(r.tag){case 8:{const o=r.fields[0],i=n(o.TypeParameters);if(null!=i){const n=i[0];return t(e,i[1],new kr(8,new Zt(o.Attributes,o.Comments,o.Kind,o.IsStatic,o.Name,n,o.Params,o.ReturnType,o.Accessibility)))}return r}case 0:{const o=r.fields[0],i=n(o.TypeParameters);if(null!=i){const n=i[0];return t(e,i[1],new kr(0,new Ot(o.Attributes,o.Comments,o.IsStatic,o.IsClass,o.Name,o.FullName,n,o.Inherits,o.Members,o.Accessibility)))}return r}case 10:{const o=r.fields[0],i=n(o.TypeParameters);if(null!=i){const n=i[0];return t(e,i[1],new kr(10,new ar(o.Attributes,o.Comments,o.Name,o.Type,n)))}return r}default:return r}}),e)}(function(e){const n=(e,n)=>{if(12!==n.tag)return n;switch(n.fields[0].Kind.tag){case 0:case 2:return Gr("obj");default:return n}},t=(e,r)=>{let o,i;switch(12===r.tag&&T(r.fields[0].Kind,new cr(0))?(o=0,i=r.fields[0]):o=1,o){case 0:return new kr(12,new dr(gt(A(1,t,[e]),i.Types),i.Kind));case 1:return Rs(e,n,r)}};return Ms(((e,r)=>{let o,i,s,a;switch(22===r.tag&&null!=r.fields[0].Constraint?(o=0,i=r.fields[0].Constraint,s=r.fields[0].Default,a=r.fields[0]):o=1,o){case 0:return new kr(22,new Rt(a.Name,t(e,i),Pn(A(1,n,[e]),s)));case 1:return r}}),Ds((e=>{let n;switch(n=22===e.tag&&null!=e.fields[0].Constraint?0:1,n){case 0:return!1;case 1:return!0}}),n,Ms(((e,n)=>{if(10!==n.tag)return n;{const e=n.fields[0],t=e.Type;let r;switch(r=12===t.tag&&T(t.fields[0].Kind,new cr(2))?0:1,r){case 0:return new kr(0,new Ot(Zn(),e.Comments,!1,!1,e.Name,e.Name,e.TypeParameters,Zn(),Zn(),void 0));case 1:return n}}}),Ms(((e,n)=>{if(10===n.tag){const e=n.fields[0],t=e.Type;return 12===t.tag&&0===t.fields[0].Kind.tag?new kr(0,new Ot(Zn(),e.Comments,!1,!1,e.Name,e.Name,e.TypeParameters,Zn(),Zn(),void 0)):n}return n}),Ms(((e,n)=>{if(10===n.tag){const e=n.fields[0],t=e.Type;if(8===t.tag){const n=t.fields[0];return new kr(0,new Ot(Zn(),e.Comments,!1,!1,e.Name,e.Name,e.TypeParameters,Zn(),Qn(new kr(8,new Zt(n.Attributes,e.Comments,new Yt(2),n.IsStatic,"Invoke",n.TypeParameters,n.Params,n.ReturnType,n.Accessibility))),void 0))}return n}return n}),e)))))}(Us(Ms(((e,n)=>{if(13===n.tag){const e=n.fields[0];return new kr(13,new Ar(e.Comments,e.HasDeclare,e.IsNamespace,e.Name,mt((e=>{let n,t;switch(13===e.tag&&"internal"===e.fields[0].Name?(n=0,t=e.fields[0]):n=1,n){case 0:return t.Types;case 1:return Qn(e)}}),e.Types),e.HelperLines,e.Attributes))}return n}),n)))))),Ms(((e,n)=>{if(11===n.tag){const e=n.fields[0];return ri(Jr(n),li)?new kr(11,new rr(Gr("obj"),Zn())):new kr(11,new rr(e.Type,gt((e=>7===e.tag&&ti(li,e.fields[0].Name)?Gr("obj"):e),e.TypeParameters)))}return n}),t))))))))))))))))))))))))));var t}function Ga(e){const n=function(e){const n=(e,n)=>{const t={getSourceFile:e=>vt((n=>n.fileName===e),n),writeFile:e=>{},getDefaultLibFileName:e=>"lib.d.ts",useCaseSensitiveFileNames:()=>!1,getCanonicalFileName:e=>e,getCurrentDirectory:()=>"",getNewLine:()=>"\r\n",fileExists:n=>Et(n,e,{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)}),readFile:e=>"",directoryExists:e=>!0,getDirectories:e=>[]};return wi.createProgram(Array.from(e),{target:2,module:1},t)};if(1===e.tag){const t=e.fields[0];return n(Qn(t.FileName),Qn(t.SourceFile))}{const t=[Ba(e),e.fields[0].ReadText],r=t[0];return n(r,gt((e=>wi.createSourceFile(e,t[1](e),2,!0)),r))}}(e),t=1===(r=e).tag?"moduleName":r.fields[0].NameSpace;var r;const o=Ba(e),i=a(o);try{for(;i["System.Collections.IEnumerator.MoveNext"]();){const e=i["System.Collections.Generic.IEnumerator`1.get_Current"]();mn(pn("export %s"))(e)}}finally{i.Dispose()}const s=St((e=>e),gt((e=>n.getSourceFile(e)),o)),l=n.getTypeChecker(),c=new Map(Io((e=>[e.fileName,Si(e.fileName)]),n.getSourceFiles())),d=gt((n=>ja(e,function(e,n,t){let r,o;return new _r(t.Kind,t.FileName,t.ModuleName,Qn((r=mt((n=>Ma(e,n)),ut(n.statements)),o=t.Kind,1===o.tag?new Ar(Zn(),!0,!1,function(e){const n=di(e);return 1===ui(n).tag?hn(pn("./%s"))(n):n}(o.fields[0]),r,Zn(),Zn()):new Ar(Zn(),!1,!1,"",r,Zn(),Zn()))))}(l,n,new _r(function(e,n){if(1===n.tag)return new Or(0);{const t=n.fields[0];return t.GetFsFileKind([t,e])}}(n.fileName,e),n.fileName,Li(c,n.fileName),Zn())))),s);return zs(new Nr(yi(t),dt(["System","Fable.Core","Fable.Core.JS"]),d,Zn()))}class Wa extends Error{constructor(){super("The operation was canceled"),Object.setPrototypeOf(this,Wa.prototype)}}function qa(e){return n=>{if(n.cancelToken.isCancelled)n.onCancel(new Wa);else if(n.trampoline.incrementAndCheck())n.trampoline.hijack((()=>{try{e(n)}catch(e){n.onError(e)}}));else try{e(n)}catch(e){n.onError(e)}}}function za(e,n,t){at((t=>{try{t(n)}catch(n){e(n)}}),t)}function Ka(){return Zn()}function Va(e){return Qn((n=>{n(e)}))}new class{Bind(e,n){return function(e,n){return qa((t=>{e({onSuccess:e=>{try{n(e)(t)}catch(e){t.onError(e)}},onError:t.onError,onCancel:t.onCancel,cancelToken:t.cancelToken,trampoline:t.trampoline})}))}(e,n)}Combine(e,n){return this.Bind(e,(()=>n))}Delay(e){return qa((n=>e()(n)))}For(e,n){const t=e[Symbol.iterator]();let r=t.next();return this.While((()=>!r.done),this.Delay((()=>{const e=n(r.value);return r=t.next(),e})))}Return(e){return function(e){return qa((n=>n.onSuccess(e)))}(e)}ReturnFrom(e){return e}TryFinally(e,n){return qa((t=>{e({onSuccess:e=>{n(),t.onSuccess(e)},onError:e=>{n(),t.onError(e)},onCancel:e=>{n(),t.onCancel(e)},cancelToken:t.cancelToken,trampoline:t.trampoline})}))}TryWith(e,n){return qa((t=>{e({onSuccess:t.onSuccess,onCancel:t.onCancel,cancelToken:t.cancelToken,trampoline:t.trampoline,onError:e=>{try{n(e)(t)}catch(e){t.onError(e)}}})}))}Using(e,n){return this.TryFinally(n(e),(()=>e.Dispose()))}While(e,n){return e()?this.Bind(n,(()=>this.While(e,n))):this.Return(void 0)}Zero(){return qa((e=>e.onSuccess(void 0)))}},new class{constructor(e=!1){this._id=0,this._cancelled=e,this._listeners=new Map}get isCancelled(){return this._cancelled}cancel(){if(!this._cancelled){this._cancelled=!0;for(const[,e]of this._listeners)e()}}addListener(e){const n=this._id;return this._listeners.set(this._id++,e),n}removeListener(e){return this._listeners.delete(e)}register(e,n){const t=this,r=this.addListener(null==n?e:()=>e(n));return{Dispose(){t.removeListener(r)}}}};class Ja extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["DangerouslySetInnerHTML","OnCut","OnPaste","OnCompositionEnd","OnCompositionStart","OnCopy","OnCompositionUpdate","OnFocus","OnBlur","OnChange","OnInput","OnSubmit","OnReset","OnLoad","OnError","OnKeyDown","OnKeyPress","OnKeyUp","OnAbort","OnCanPlay","OnCanPlayThrough","OnDurationChange","OnEmptied","OnEncrypted","OnEnded","OnLoadedData","OnLoadedMetadata","OnLoadStart","OnPause","OnPlay","OnPlaying","OnProgress","OnRateChange","OnSeeked","OnSeeking","OnStalled","OnSuspend","OnTimeUpdate","OnVolumeChange","OnWaiting","OnClick","OnContextMenu","OnDoubleClick","OnDrag","OnDragEnd","OnDragEnter","OnDragExit","OnDragLeave","OnDragOver","OnDragStart","OnDrop","OnMouseDown","OnMouseEnter","OnMouseLeave","OnMouseMove","OnMouseOut","OnMouseOver","OnMouseUp","OnSelect","OnTouchCancel","OnTouchEnd","OnTouchMove","OnTouchStart","OnScroll","OnWheel","OnAnimationStart","OnAnimationEnd","OnAnimationIteration","OnTransitionEnd"]}}class Ya extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["DefaultChecked","DefaultValue","Accept","AcceptCharset","AccessKey","Action","AllowFullScreen","AllowTransparency","Alt","aria-atomic","aria-busy","aria-checked","aria-colcount","aria-colindex","aria-colspan","aria-controls","aria-current","aria-describedby","aria-details","aria-disabled","aria-errormessage","aria-expanded","aria-flowto","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-level","aria-live","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-owns","aria-placeholder","aria-posinset","aria-pressed","aria-readonly","aria-relevant","aria-required","aria-roledescription","aria-rowcount","aria-rowindex","aria-rowspan","aria-selected","aria-setsize","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext","Async","AutoComplete","AutoFocus","AutoPlay","Capture","CellPadding","CellSpacing","CharSet","Challenge","Checked","ClassID","ClassName","className","Cols","ColSpan","Content","ContentEditable","ContextMenu","Controls","Coords","CrossOrigin","data-toggle","DateTime","Default","Defer","Dir","Disabled","Download","Draggable","EncType","Form","FormAction","FormEncType","FormMethod","FormNoValidate","FormTarget","FrameBorder","Headers","Height","Hidden","High","Href","HrefLang","HtmlFor","HttpEquiv","Icon","Id","InputMode","Integrity","Is","KeyParams","KeyType","Kind","Label","Lang","List","Loop","Low","Manifest","MarginHeight","MarginWidth","Max","MaxLength","Media","MediaGroup","Method","Min","MinLength","Multiple","Muted","Name","NoValidate","Open","Optimum","Pattern","Placeholder","Poster","Preload","RadioGroup","ReadOnly","Rel","Required","Role","Rows","RowSpan","Sandbox","Scope","Scoped","Scrolling","Seamless","Selected","Shape","Size","Sizes","Span","SpellCheck","Src","SrcDoc","SrcLang","SrcSet","Start","Step","Summary","TabIndex","Target","Title","Type","UseMap","Value","value","Width","Wmode","Wrap","About","Datatype","Inlist","Prefix","Property","Resource","Typeof","Vocab","AutoCapitalize","AutoCorrect","AutoSave","ItemProp","ItemScope","ItemType","ItemID","ItemRef","Results","Security","Unselectable","Custom"]}}var Za=t(9526);function Xa(e){return K(n=e),n.cases()[n.tag];var n}class Qa extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["All","desktop","tablet","mobile","widescreen","touch","fullhd"]}}function el(e){switch(e.tag){case 1:case 2:case 3:case 4:case 5:case 6:return"-"+Xa(e);default:return""}}class nl extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["is-black","is-dark","is-light","is-white","is-primary","is-info","is-success","is-warning","is-danger","is-link","is-black-bis","is-black-ter","is-grey-darker","is-grey-dark","is-grey","is-grey-light","is-grey-lighter","is-white-ter","is-white-bis","IsCustomColor","NoColor"]}}function tl(e){switch(e.tag){case 19:return"is-"+e.fields[0];case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:return Xa(e);default:return""}}function rl(e){return p(function(e){return K(n=e),n.tag;var n}(e)+1)}class ol extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["has-text-centered","has-text-justified","has-text-left","has-text-right"]}}class il extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["BackgroundColor","TextColor","TextWeight","TextSize","TextSizeOnly","TextAlignment","TextAlignmentOnly","TextTransform","Display","DisplayOnly","is-clearfix","is-pulled-left","is-pulled-right","is-marginless","is-paddingless","is-overlay","is-clipped","is-radiusless","is-shadowless","is-unselectable","is-relative","IsInvisible","IsHidden","IsInvisibleOnly","IsHiddenOnly","IsSrOnly","IsScreenReaderOnly","Spacing"]}}class sl extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["CustomClass","Props","Modifiers"]}}class al extends _{constructor(e,n,t){super(),this.Props=e,this.Classes=n,this.RemovedClasses=t}}function ll(e,n,t,r){const o=it(n,new al(Zn(),Zn(),Zn()),e),i=null==t?o:ul(o,t);return null==r?i:dl(i,r)}function cl(e,n){return new al(Xn(n,e.Props),e.Classes,e.RemovedClasses)}function dl(e,n){return new al(ft(n,e.Props),e.Classes,e.RemovedClasses)}function ul(e,n){return new al(e.Props,Xn(n,e.Classes),e.RemovedClasses)}function pl(e,n){return ul(e,Xa(n))}function fl(e,n){return new al(e.Props,ft((t=n,it(((e,n)=>{let t,r;switch(n.tag){case 1:return Xn(function(e){switch(e.tag){case 19:return"has-text-"+e.fields[0];case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:return"has-text-"+Xa(e).slice(3,Xa(e).length);default:return""}}(n.fields[0]),e);case 2:return Xn(Xa(n.fields[0]),e);case 3:return Xn("is-size-"+rl(n.fields[1])+el(n.fields[0]),e);case 4:return Xn((t=n.fields[0],2===t.tag||1===t.tag||4===t.tag?"is-size-"+rl(n.fields[1])+el(t)+"-only":(console.warn(Ln("Screen `%s` does not support `is-size-xxx-only`."+L(t))),"")),e);case 5:return Xn(Xa(n.fields[1])+el(n.fields[0]),e);case 6:return Xn((r=n.fields[0],2===r.tag||1===r.tag||4===r.tag?Xa(n.fields[1])+el(r)+"-only":(console.warn(Ln("Screen `%s` does not support `is-size-xxx-only`."+L(r))),"")),e);case 7:return Xn(Xa(n.fields[0]),e);case 8:return Xn((s=n.fields[0],"is-"+Xa(n.fields[1])+el(s)),e);case 9:return Xn(function(e,n){switch(e.tag){case 2:case 1:case 4:return"is-"+Xa(n)+el(e)+"-only";default:return console.warn(Ln("Screen `%s` does not support display only."+L(e))),""}}(n.fields[0],n.fields[1]),e);case 21:return n.fields[1]?Xn(function(e){return"is-invisible"+el(e)}(n.fields[0]),e):e;case 23:return n.fields[1]?Xn(function(e){switch(e.tag){case 2:case 1:case 4:return"is-invisible"+el(e)+"-only";default:return console.warn(Ln("Screen `%s` does not support `is-invisible-xxx-only`."+L(e))),""}}(n.fields[0]),e):e;case 22:return n.fields[1]?Xn(function(e){return"is-hidden"+el(e)}(n.fields[0]),e):e;case 24:return n.fields[1]?Xn(function(e){switch(e.tag){case 2:case 1:case 4:return"is-hidden"+el(e)+"-only";default:return console.warn(Ln("Screen `%s` does not support `is-hidden-xxx-only`."+L(e))),""}}(n.fields[0]),e):e;case 25:case 26:return Xn("is-sr-only",e);case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:return Xn(Xa(n),e);case 27:return Xn((o=n.fields[0],i=n.fields[1],Xa(o)+"-"+Xa(i)),e);default:return Xn(function(e){switch(e.tag){case 19:return"has-background-"+e.fields[0];case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:return"has-background-"+Xa(e).slice(3,Xa(e).length);default:return""}}(n.fields[0]),e)}var o,i,s}),Zn(),t)),e.Classes),e.RemovedClasses);var t}function ml(e,n,t){const r=_n(t,Zn());return n(Xn(new Ya(64,En(" ",Tt((n=>!Et(n,e.RemovedClasses,{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)})),e.Classes))),e.Props),r)}function hl(e,n){switch(n.tag){case 0:return ul(e,n.fields[0]);case 2:return fl(e,n.fields[0]);default:return dl(e,n.fields[0])}}function gl(e,n){return ml(ll(e,((e,n)=>hl(e,n))),((e,n)=>Za.createElement("div",Ii(e,1),...n)),n)}class bl extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Color","has-shadow","is-transparent","is-fixed-top","is-fixed-bottom","is-spaced","Props","CustomClass","Modifiers"]}}class vl extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["is-tab","is-active","is-hoverable","has-dropdown","is-expanded","Props","CustomClass","Modifiers"]}}function yl(e,n,t){return ml(ll(n,((e,n)=>{switch(n.tag){case 4:case 0:case 2:case 3:return pl(e,n);case 5:return dl(e,n.fields[0]);case 6:return ul(e,n.fields[0]);case 7:return fl(e,n.fields[0]);default:return n.fields[0]?pl(e,n):e}}),"navbar-item"),e,t)}function xl(e,n){return yl(((e,n)=>Za.createElement("div",Ii(e,1),...n)),e,n)}function Tl(e,n){return yl(((e,n)=>Za.createElement("a",Ii(e,1),...n)),e,n)}function Sl(e,n){return t=(e,n)=>Za.createElement("a",Ii(e,1),...n),r=n,ml(ll(e,((e,n)=>{switch(n.tag){case 1:return pl(e,n);case 2:return dl(e,n.fields[0]);case 3:return ul(e,n.fields[0]);case 4:return fl(e,n.fields[0]);default:return n.fields[0]?pl(e,n):e}}),"navbar-link"),t,r);var t,r}function El(e,n){return t=(e,n)=>Za.createElement("div",Ii(e,1),...n),r=n,ml(ll(e,((e,n)=>{switch(n.tag){case 1:case 2:return pl(e,n);case 3:return dl(e,n.fields[0]);case 4:return ul(e,n.fields[0]);case 5:return fl(e,n.fields[0]);default:return n.fields[0]?pl(e,n):e}}),"navbar-dropdown"),t,r);var t,r}function wl(e,n){return t=(e,n)=>Za.createElement("div",Ii(e,1),...n),r=n,ml(ll(e,((e,n)=>hl(e,n)),"navbar-start"),t,r);var t,r}function $l(e,n){return t=(e,n)=>Za.createElement("div",Ii(e,1),...n),r=n,ml(ll(e,((e,n)=>hl(e,n)),"navbar-end"),t,r);var t,r}class Il extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Color","Size","is-fullwidth","is-link","is-outlined","is-inverted","is-text","is-rounded","is-expanded","is-hovered","is-focused","is-active","is-loading","is-static","is-light","Disabled","Props","OnClick","CustomClass","Modifiers"]}}function kl(e,n){return function(e,n,t){return ml(ll(n,((e,n)=>{let t,r;switch(n.tag){case 1:t=1;break;case 3:case 2:case 4:case 5:case 6:case 7:case 8:case 14:t=2;break;case 9:case 10:case 11:case 12:case 13:t=3,r=n.fields[0];break;case 15:t=4;break;case 17:t=5;break;case 16:t=6;break;case 18:t=7;break;case 19:t=8;break;default:t=0}switch(t){case 0:return ul(e,tl(n.fields[0]));case 1:return ul(e,Xa(n.fields[0]));case 2:return pl(e,n);case 3:return r?pl(e,n):e;case 4:return cl(e,new Ya(79,n.fields[0]));case 5:return cl(e,new Ja(40,n.fields[0]));case 6:return dl(e,n.fields[0]);case 7:return ul(e,n.fields[0]);case 8:return fl(e,n.fields[0])}}),"button"),e,t)}(((e,n)=>Za.createElement("a",Ii(e,1),...n)),e,n)}class Cl extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["is-active","Color","Props","CustomClass","Modifiers"]}}function Al(e){return Xa(e)}class Ll extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["is-centered","is-vcentered","is-multiline","is-gapless","is-grid","is-mobile","is-desktop","IsGap","IsGapOnly","CustomClass","Props","Modifiers"]}}function Ol(e,n){return ml(ll(e,((e,n)=>{let t,r,o,i,s,a,l,c,d,u,p,f;switch(n.tag){case 1:case 2:case 3:case 4:case 5:case 6:return pl(e,n);case 7:{const t=n.fields[1],r=n.fields[0];return Et("is-variable",e.Classes,{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)})?ul(e,Al(t)+el(r)):ul(ul(e,"is-variable"),Al(t)+el(r))}case 8:{const h=n.fields[1],g=n.fields[0];return Et("is-variable",e.Classes,{Equals:(e,n)=>e===n,GetHashCode:e=>m(e)})?ul(e,(l=g,c=h,2===l.tag||1===l.tag||4===l.tag?Al(c)+el(l)+"-only":(d=l,console.warn(Ln((u=el(d),p=Al(c),f=el(d),hn(pn("Screen `%s` does not support `is-%s-%s-only`."))(f)(p)(u)))),""))):ul(ul(e,"is-variable"),(t=g,r=h,2===t.tag||1===t.tag||4===t.tag?Al(r)+el(t)+"-only":(o=t,console.warn(Ln((i=el(o),s=Al(r),a=el(o),hn(pn("Screen `%s` does not support `is-%s-%s-only`."))(a)(s)(i)))),"")))}case 10:return dl(e,n.fields[0]);case 9:return ul(e,n.fields[0]);case 11:return fl(e,n.fields[0]);default:return pl(e,n)}}),"columns"),((e,n)=>Za.createElement("div",Ii(e,1),...n)),n)}class _l extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["is-one-quarter","is-one-third","is-half","is-two-thirds","is-three-quarters","is-1","is-2","is-3","is-4","is-5","is-6","is-7","is-8","is-9","is-10","is-11","is-12","is-narrow","is-full","is-one-fifth","is-two-fifths","is-three-fifths","is-four-fifths"]}}class Pl extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Width","Offset","CustomClass","Props","Modifiers"]}}function Nl(e){switch(e.tag){case 1:return"-desktop";case 2:return"-tablet";case 3:return"-mobile";case 4:return"-widescreen";case 6:return"-fullhd";case 5:return"-touch";default:return""}}function Rl(e,n){return ml(ll(e,((e,n)=>{switch(n.tag){case 1:return ul(e,function(e,n){const t=Xa(n);return"is-offset-"+t.slice(3,t.length)+Nl(e)}(n.fields[0],n.fields[1]));case 2:return ul(e,n.fields[0]);case 3:return dl(e,n.fields[0]);case 4:return fl(e,n.fields[0]);default:return ul(e,(t=n.fields[0],Xa(n.fields[1])+Nl(t)))}var t}),"column"),((e,n)=>Za.createElement("div",Ii(e,1),...n)),n)}function Dl(e,n){return ml(ll(e,((e,n)=>{switch(n.tag){case 1:return ul(e,Xa(n.fields[0]));case 2:return dl(e,n.fields[0]);case 3:return ul(e,n.fields[0]);case 4:return fl(e,n.fields[0]);default:return ul(e,tl(n.fields[0]))}}),"message"),((e,n)=>Za.createElement("article",Ii(e,1),...n)),n)}function Ml(e,n){return ml(ll(e,((e,n)=>hl(e,n)),"message-body"),((e,n)=>Za.createElement("div",Ii(e,1),...n)),n)}var Hl=t(5849),Fl=t(2652),Ul=t.n(Fl),Bl=t(8596);function jl(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}class Gl extends Za.Component{constructor(e){super(e),jl(this,"editor",null),jl(this,"editorDidMount",((e,n)=>{this.props.editorDidMount(),this.editor=e})),jl(this,"onChange",((e,n)=>{this.props.onChange(e)})),jl(this,"onResize",(()=>{null!==this.editor&&this.editor.layout()}))}render(){const e={selectOnLineNumbers:!0,lineNumbers:!1,readOnly:this.props.isReadOnly,minimap:{enabled:!1}};return Za.createElement("div",{style:{height:"100%",overflow:"hidden"}},Za.createElement(Bl.Z,{handleWidth:!0,handleHeight:!0,onResize:this.onResize}),Za.createElement(Hl.ZP,{language:this.props.language,value:this.props.value,options:e,onChange:this.onChange,editorDidMount:this.editorDidMount,requireConfig:{url:"libs/requirejs/require.js",paths:{vs:"libs/vs"}}}))}}function Wl(){}Gl.propTypes={onChange:Ul().func,value:Ul().string,language:Ul().string,isReadOnly:Ul().bool,editorDidMount:Ul().func},Gl.defaultProps={onChange:Wl,value:"",language:"html",isReadOnly:!1,editorDidMount:Wl};const ql=Gl;class zl extends Za.Component{constructor(e){var n,t,r;super(e),r=()=>{this.state.showSuccess&&this.setState({showSuccess:!1})},(t="onMouseLeave")in(n=this)?Object.defineProperty(n,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[t]=r,this.state={showSuccess:!1}}componentDidMount(){const e=t(8294);this.clipboard=new e(this.element);const n=this;this.clipboard.on("success",(function(e){n.setState({showSuccess:!0})}))}render(){return Za.createElement("div",{className:"button is-success "+(this.state.showSuccess?"tooltip":""),"data-tooltip":"Code copied",ref:e=>{this.element=e},"data-clipboard-text":this.props.value,onMouseLeave:this.onMouseLeave},Za.createElement("span",{className:"icon"},Za.createElement("i",{className:"fa fa-copy"})),Za.createElement("span",null,"Copy to clipboard"))}}zl.propTypes={value:Ul().string},zl.defaultProps={value:""};const Kl=zl;class Vl extends _{constructor(e,n){super(),this.bound=0|e,this.digits=n}}function Jl(e,n){for(;;){const t=e,r=n;if(0===r)return 1;if(r%2!=0)return t*Jl(t*t,~~(r/2))|0;e=t*t,n=~~(r/2)}}function Yl(e){return e.bound}function Zl(e,n){return e.digits[n]}function Xl(e,n){return Ze(Zl(e,n),!1,2)}function Ql(e,n,t){e.digits[n]=0|t}function ec(e,n){for(;;){const t=e,r=n;if(0===r)return Je(1,0,!1);if(r%2!=0)return We(t,ec(We(t,t),~~(r/2)));e=We(t,t),n=~~(r/2)}}function nc(e,n){for(;;){const t=e,r=n;if(0===r)return 1;if(r%2!=0)return t*nc(t*t,~~(r/2))|0;e=t*t,n=~~(r/2)}}Je(2013265921,0,!1),Je(2013265921,0,!0),Mn(28,(e=>Jl(2,e)),Int32Array);const tc=16777216,rc=Je(16777216,0,!1),oc=Je(16777215,0,!1);function ic(e){return new Vl(e,new Int32Array(e))}function sc(e){const n=0|((e,n)=>{for(;;){const t=e,r=n;if(-1===r||0!==t[r])return r+1|0;e=t,n=r-1}})(e.digits,e.bound-1);return e.bound=0|n,e}function ac(e){const n=0|(e<0?0:e);if(n=0;t--)n=e.digits[t]+tc*n|0;return 0|n}}Je(16777215,0,!0);const cc=ac(1),dc=ac(0);function uc(e){return e.bound-1}function pc(e){return 0===e.bound}function fc(e,n){return-1===function(e,n){return e.boundn.bound?1:0|((e,n,t)=>{for(;;){const r=e,o=n,i=t;if(-1===i)return 0;if(r[i]!==o[i])return r[i]0))break;{const s=Ge(Xl(r,i),o);Ql(r,i,~~Ye(Ke(s,oc))),e=r,n=qe(s,rc),t=i+1}}}function hc(e,n){const t=0|Yl(e),r=ic(t+1),o=Ze(n,!1,2);let i=Je(0,0,!1);for(let n=0;n<=t-1;n++){const t=Ge(Ge(i,Xl(r,n)),We(Xl(e,n),o));Ql(r,n,~~Ye(Ke(t,oc))),i=qe(t,rc)}return mc(r,i,t),sc(r)}class gc extends _{constructor(e,n,t,r,o,i,s){super(),this.bigL=0|e,this.twoToBigL=0|n,this.k=0|t,this.bigK=0|r,this.bigN=0|o,this.split=0|i,this.splits=s}}function bc(e,n,t,r){return new gc(e,nc(2,e),n,t,r,~~(24/e),Mn(~~(24/e),(n=>nc(2,e*n)),Int32Array))}const vc=[bc(1,28,268435456,268435456),bc(2,26,67108864,134217728),bc(3,24,16777216,50331648),bc(4,22,4194304,16777216),bc(5,20,1048576,5242880),bc(6,18,262144,1572864),bc(7,16,65536,458752),bc(8,14,16384,131072),bc(9,12,4096,36864),bc(10,10,1024,10240),bc(11,8,256,2816),bc(12,6,64,768),bc(13,4,16,208)];function yc(e,n){return function(e,n){const t=1===Yl(e),r=1===Yl(n);return t&&r?function(e,n){const t=ic(2),r=We(Ze(e,!1,2),Ze(n,!1,2));return Ql(t,0,~~Ye(Ke(r,oc))),Ql(t,1,~~Ye(qe(r,rc))),sc(t)}(Zl(e,0),Zl(n,0)):t?hc(n,Zl(e,0)):r?hc(e,Zl(n,0)):function(e,n){const t=ic(e.bound+n.bound),r=t.digits;for(let o=0;o<=e.bound-1;o++){const i=Ze(e.digits[o],!1,2);let s=Je(0,0,!1),a=0|o;for(let e=0;e<=n.bound-1;e++){const t=Ze(n.digits[e],!1,2),o=Ge(Ge(Ze(r[a],!1,2),s),We(i,t));r[a]=0|~~Ye(Ke(o,oc)),s=qe(o,rc),a=a+1|0}mc(t,s,a)}return sc(t)}(e,n)}(e,n)}function xc(e,n,t,r){const o=[e.digits,uc(e)],i=o[0],s=[t.digits,uc(t)],a=0|s[1],l=s[0],c=Ze(n,!1,2);let d=0,u=We(c,Ze(l[0],!1,2));for(;Ve(u,Je(0,0,!1))>0||do[1])throw new Error("scaleSubInPlace: pre-condition did not apply, result would be -ve");let e=0|~~Ye(Ke(u,oc)),n=qe(u,rc);e<=i[d+r]?i[d+r]=i[d+r]-e|0:(i[d+r]=i[d+r]+(tc-e)|0,n=Ge(n,Je(1,0,!1))),u=d0||do[1])throw new Error("scaleSubInPlace: pre-condition did not apply, result would be -ve");let e=0|~~Ye(Ke(u,oc)),n=qe(u,rc);el.bound+a?1:0|((e,n,t)=>{e:for(;;){const r=e,o=n,i=t;if(-1===i)return 0;{const s=0|(i{};let l=!1;for(;!l;){a([r,t,s,o]);const e=0|Sc(t,n,s);e>0?(xc(t,e,n,s),Tc(r,e,cc,s),a([r,t,s,o])):(l=0===e&&0===s,l||(o===i+s?(a([r,t,s-1,o]),s=s-1|0):(a([r,t,s-1,o-1]),s=s-1|0,o=o-1|0)))}return[sc(r),sc(t)]}}function wc(e){return ac(e)}function $c(e){const n=0|uc(e),t=(e,n,r,o)=>{e:for(;;){const i=e,s=n,a=r,l=o;if(et(l)){const e=0|lc(a);return i&&0===e?s:Xn(p(e),s)}{const c=rt(l),d=Ec(a,tt(l)[1]),u=d[1],p=d[0];if(i&&pc(p)){e=i,n=s,r=u,o=c;continue e}e=i,n=t(!1,s,u,c),r=p,o=c;continue e}}},r=t(!0,Zn(),e,((e,t,r)=>{for(;;){const o=e,i=t,s=r;if(uc(s)>n)return Xn([i,s],o);e=Xn([i,s],o),t=i+1,r=yc(s,s)}})(Zn(),0,ac(10)));return et(r)?"0":En("",ot(r))}function Ic(e){const n=e;return 0nc(2,e)-1),Int32Array),Mn(24,(e=>nc(2,e)),Int32Array),Mn(24,(e=>ec(Je(2,0,!1),e))),vc[0].bigN,ac(2);var kc={GetHashCode(){return g([this.s,this.e].concat(this.c))},Equals(e){return!this.cmp(e)},CompareTo(e){return this.cmp(e)},[Z](){const e=this;return{multiply:n=>e.mul(n),toPrecision:n=>e.toPrecision(n),toExponential:n=>e.toExponential(n),toFixed:n=>e.toFixed(n),toHex:()=>(Number(e)>>>0).toString(16)}}},Cc=1e6,Ac="[big.js] ",Lc=Ac+"Invalid ",Oc=Lc+"decimal places",_c=Lc+"rounding mode",Pc=Ac+"Division by zero",Nc=void 0,Rc=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function Dc(e,n){var t,r,o;if(0===n&&1/n<0)n="-0";else if(!Rc.test(n+=""))throw Error(Lc+"number");for(e.s="-"==n.charAt(0)?(n=n.slice(1),-1):1,(t=n.indexOf("."))>-1&&(n=n.replace(".","")),(r=n.search(/e/i))>0?(t<0&&(t=r),t+=+n.slice(r+1),n=n.substring(0,r)):t<0&&(t=n.length),o=n.length,r=0;r=5;else if(2===t)r=o[i]>5||5==o[i]&&(r||i<0||o[i+1]!==Nc||1&o[i-1]);else if(3===t){const e=o.findIndex(((e,n)=>n>=i&&e>0))<0;r=r||!e}else if(r=!1,0!==t)throw Error(_c);if(i<1)o.length=1,r?(e.e=-n,o[0]=1):o[0]=e.e=0;else{if(o.length=i--,r)for(;++o[i]>9;)o[i]=0,i--||(++e.e,o.unshift(1));for(i=o.length;!o[--i];)o.pop()}}else if(t<0||t>3||t!==~~t)throw Error(_c);return e}function Hc(e,n,t,r){var o,i,s=e.constructor,a=!e.c[0];if(t!==Nc){if(t!==~~t||t<(3==n)||t>Cc)throw Error(3==n?Lc+"precision":Oc);for(t=r-(e=new s(e)).e,e.c.length>++r&&Mc(e,t,s.RM),2==n&&(r=e.e+t+1);e.c.length=s.PE))i=i.charAt(0)+(t>1?"."+i.slice(1):"")+(o<0?"e":"e+")+o;else if(o<0){for(;++o;)i="0"+i;i="0."+i}else if(o>0)if(++o>t)for(o-=t;o--;)i+="0";else o1&&(i=i.charAt(0)+"."+i.slice(1));return e.s<0&&(!a||4==n)?"-"+i:i}kc.abs=function(){var e=new this.constructor(this);return e.s=1,e},kc.cmp=function(e){var n,t=this.constructor,r=new t(this),o=(e=new t(e),r.c),i=e.c,s=r.s,a=e.s,l=r.e,c=e.e;if(!o[0]||!i[0])return o[0]?s:i[0]?-a:0;if(s!=a)return s;if(n=s<0,l!=c)return l>c^n?1:-1;for(a=Math.max(o.length,i.length),s=0;sc^n?1:-1;return 0},kc.div=function(e){var n=this.constructor,t=new n(this),r=(e=new n(e),t.c),o=e.c,i=t.s==e.s?1:-1,s=n.DP;if(s!==~~s||s<0||s>Cc)throw Error(Oc);if(!o[0])throw Error(Pc);if(!r[0])return new n(0*i);var a,l,c,d,u,p=o.slice(),f=a=o.length,m=r.length,h=r.slice(0,a),g=h.length,b=e,v=b.c=[],y=0,x=s+(b.e=t.e-e.e)+1;for(b.s=i,i=x<0?0:x,p.unshift(0);g++g?1:-1;else for(u=-1,d=0;++uh[u]?1:-1;break}if(!(d<0))break;for(l=g==a?o:p;g;){if(h[--g]x&&Mc(b,s,n.RM,h[0]!==Nc),b},kc.eq=function(e){return!this.cmp(e)},kc.gt=function(e){return this.cmp(e)>0},kc.gte=function(e){return this.cmp(e)>-1},kc.lt=function(e){return this.cmp(e)<0},kc.lte=function(e){return this.cmp(e)<1},kc.minus=kc.sub=function(e){var n,t,r,o,i=this.constructor,s=new i(this),a=(e=new i(e),s.s),l=e.s;if(a!=l)return e.s=-l,s.plus(e);var c=s.c.slice(),d=s.e,u=e.c,p=e.e;if(!c[0]||!u[0])return u[0]?(e.s=-l,e):new i(c[0]?s:0);if(a=d-p){for((o=a<0)?(a=-a,r=c):(p=d,r=u),r.reverse(),l=a;l--;)r.push(0);r.reverse()}else for(t=((o=c.length0)for(;l--;)c[n++]=0;for(l=n;t>a;){if(c[--t]0?(l=s,n=c):(o=-o,n=a),n.reverse();o--;)n.push(0);n.reverse()}for(a.length-c.length<0&&(n=c,c=a,a=n),o=c.length,i=0;o;a[o]%=10)i=(a[--o]=a[o]+c[o]+i)/10|0;for(i&&(a.unshift(i),++l),o=a.length;0===a[--o];)a.pop();return e.c=a,e.e=l,e},kc.pow=function(e){var n=this.constructor,t=new n(this),r=new n(1),o=new n(1),i=e<0;if(e!==~~e||e<-1e6||e>1e6)throw Error(Lc+"exponent");for(i&&(e=-e);1&e&&(r=r.times(t)),e>>=1;)t=t.times(t);return i?o.div(r):r},kc.round=function(e,n){var t=this.constructor;if(e===Nc)e=0;else if(e!==~~e||e<-Cc||e>Cc)throw Error(Oc);return Mc(new t(this),e,n===Nc?t.RM:n)},kc.sqrt=function(){var e,n,t,r=this.constructor,o=new r(this),i=o.s,s=o.e,a=new r(.5);if(!o.c[0])return new r(o);if(i<0)throw Error(Ac+"No square root");0===(i=Math.sqrt(o+""))||i===1/0?((n=o.c.join("")).length+s&1||(n+="0"),s=((s+1)/2|0)-(s<0||1&s),e=new r(((i=Math.sqrt(n))==1/0?"1e":(i=i.toExponential()).slice(0,i.indexOf("e")+1))+s)):e=new r(i),s=e.e+(r.DP+=4);do{t=e,e=a.times(t.plus(o.div(t)))}while(t.c.slice(0,s).join("")!==e.c.slice(0,s).join(""));return Mc(e,r.DP-=4,r.RM)},kc.times=kc.mul=function(e){var n,t=this.constructor,r=new t(this),o=(e=new t(e),r.c),i=e.c,s=o.length,a=i.length,l=r.e,c=e.e;if(e.s=r.s==e.s?1:-1,!o[0]||!i[0])return new t(0*e.s);for(e.e=l+c,sl;)a=n[c]+i[l]*o[c-l-1]+a,n[c--]=a%10,a=a/10|0;n[c]=(n[c]+a)%10}for(a?++e.e:n.shift(),l=n.length;!n[--l];)n.pop();return e.c=n,e},kc.toExponential=function(e){return Hc(this,1,e,e)},kc.toFixed=function(e){return Hc(this,2,e,this.e+e)},kc.toPrecision=function(e){return Hc(this,3,e,e-1)},kc.toString=function(){return Hc(this)},kc.valueOf=kc.toJSON=function(){return Hc(this,4)};var Fc=function e(){function n(t){var r=this;if(!(r instanceof n))return t===Nc?e():new n(t);t instanceof n?(r.s=t.s,r.e=t.e,r.c=t.c.slice(),function(e){if((e=Mc(e,28,0)).c.length>1&&!e.c[0]){let n=e.c.findIndex((e=>e));e.c=e.c.slice(n),e.e=e.e-n}}(r)):Dc(r,t),r.constructor=n}return n.prototype=kc,n.DP=28,n.RM=1,n.NE=-29,n.PE=29,n.version="5.2.2",n}();const Uc=Fc;new Uc(0),new Uc(1),new Uc(-1),new Uc("79228162514264337593543950335"),new Uc("-79228162514264337593543950335");class Bc extends _{constructor(e,n){super(),this.signInt=0|e,this.v=n}toString(){const e=this;switch(0|Wc(e)){case-1:return pc(qc(e))?"0":"-"+$c(qc(e));case 0:return"0";case 1:return $c(qc(e));default:throw new Error("signs should be +/- 1 or 0")}}Equals(e){return e instanceof Bc&&zc(this,e)}GetHashCode(){return 0|(0===Wc(this)?1:Wc(this)+function(e){let n=0;for(let t=0;t<=e.bound-1;t++)n=e.digits[t]+(n<<3)|0;return 0|n}(qc(this))|0)}CompareTo(e){if(e instanceof Bc)return 0|(function(e,n){const t=[Wc(e),Wc(n)];let r;switch(r=-1===t[0]?-1===t[1]?1:0===t[1]?8:1===t[1]?3:9:0===t[0]?-1===t[1]?6:0===t[1]?4:1===t[1]?5:9:1===t[0]?-1===t[1]?2:0===t[1]?7:1===t[1]?0:9:9,r){case 0:return fc(qc(e),qc(n));case 1:return fc(qc(n),qc(e));case 2:return!1;case 3:return!pc(qc(e))||!pc(qc(n));case 4:return!1;case 5:return!pc(qc(n));case 6:case 7:return!1;case 8:return!pc(qc(e));case 9:throw new Error("signs should be +/- 1 or 0\\nParameter name: x")}}(this,n=e)?-1:zc(this,n)?0:1);throw new Error("the objects are not comparable\\nParameter name: obj");var n}}function jc(e,n){return new Bc(e,n)}function Gc(e){return function(e){return e.bound<=1}(e)&&Ic(e){for(;;){const r=e,o=n,i=t;if(-1===i)return!0;if(r[i]!==o[i])return!1;e=r,n=o,t=i-1}})(o.digits,i.digits,o.bound-1);case 2:case 3:return!!pc(qc(e))&&pc(qc(n));case 4:return!0;case 5:case 6:return pc(qc(n));case 7:case 8:return pc(qc(e));case 9:throw new Error("signs should be +/- 1 or 0\\nParameter name: x")}var o,i}function Kc(e){return e>=0?jc(1,Gc(wc(e))):jc(-1,Gc(-2147483648===e?function(e){return function(e){const n=Ve(e,Je(0,0,!1))<0?Je(0,0,!1):e,t=ic(3);for(let e=0;e<=2;e++)t.digits[e]=0|~~Ye((r=qe(n,ec(rc,e)),o=rc,se(o)||(o=me(o)),oe?ue((r.unsigned?oe.rem_u:oe.rem_s)(r.low,r.high,o.low,o.high),oe.get_high(),r.unsigned):Ue(r,Be(je(r,o),o))));var r,o;return sc(t)}(e)}(ze(Ze(e,!1,2))):wc(-2147483648===(n=e)?n:-n)));var n}function Vc(){return Bc.one}function Jc(){return Bc.zero}function Yc(e,n,t,r,o){const i=function(e,n,t,r){const o=0|$(e,t);if(0===o)throw new Error("The step of a range cannot be zero");const i=o>0;return t=>{const o=0|$(t,n);return i&&o<=0||!i&&o>=0?[t,r(t,e)]:void 0}}(n,t,r,o);return mo((()=>{return n=i,t=e,po((()=>function(e,n){let t,r=n;return co((()=>null!=t?(t[1],t[0]):io()),(()=>{if(t=e(r),null!=t){t[0];const e=t[1];return r=e,!0}return!1}),(()=>{}))}(n,t)));var n,t}))}Bc.smallLim=4096,Bc.smallPosTab=Mn(Bc.smallLim,(e=>wc(e))),Bc.one=Kc(1),Bc.two=Kc(2),Bc.zero=Kc(0),Jc(),Vc(),Bc.two,Jc(),Vc();class Zc extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Writable","ReadWritable"]}}class Xc{constructor(e){this.state=new Zc(0,Dn(new Array(I(((e,n)=>E(e,n)),e,10)),0,I(((e,n)=>E(e,n)),e,10),null),0)}}function Qc(e){const n=e.state;if(1===n.tag){const t=0|n.fields[1],r=0|n.fields[2],o=n.fields[0],i=(r+1)%o.length|0;return e.state=i===t?new Zc(0,o,t):new Zc(1,o,t,i),Ln(o[r])}}function ed(e,n){const t=e.state;if(1===t.tag){const i=0|t.fields[1],s=0|t.fields[2],a=t.fields[0];a[i]=n;const l=(i+1)%a.length|0;e.state=l===s?new Zc(1,(r=s,o=a,Array.from(mo((()=>yo(ko(r,o),mo((()=>{return yo((e=r,n=o,t=()=>fo(n),i=(n,t)=>{if(n{e.Dispose()},po((()=>{let e=-1;return uo(t,(n=>(e=e+1|0,i(e,n))),s)}))),mo((()=>{return n=e=>go(null),e=o.length,t=Yc(0,1,e,0,((e,n)=>e+n)),mo((()=>ho(Io(n,t))));var e,n,t})));var e,n,t,i,s}))))))),a.length,0):new Zc(1,a,l,s)}else{const r=0|t.fields[1],o=t.fields[0];o[r]=n;const i=(r+1)%o.length|0;e.state=new Zc(1,o,i,r)}var r,o}class nd extends _{constructor(e,n,t,r,o,i,s){super(),this.init=e,this.update=n,this.subscribe=t,this.view=r,this.setState=o,this.onError=i,this.syncDispatch=s}}var td,rd=t(3961);class od extends _{constructor(e,n,t){super(),this.model=e,this.render=n,this.equal=t}}class id extends Za.Component{constructor(e){super(e)}shouldComponentUpdate(e,n){return!this.props.equal(this.props.model,e.model)}render(){return this.props.render()}}class sd extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["Loading","Loaded"]}}class ad extends _{constructor(e,n,t,r){super(),this.HtmlCode=e,this.FSharpCode=n,this.HtmlEditorState=t,this.FSharpEditorState=r}}class ld extends O{constructor(e,...n){super(),this.tag=0|e,this.fields=n}cases(){return["HtmlEditorLoaded","FSharpEditorLoaded","OnHtmlChange","UpdateFSharpCode"]}}function cd(e){return mn(pn("// Placeholder for ts2fable lib\n")),function(e){const n=[];let t=a(function(e,n){const t=[],r=hn(pn("// ts2fable %s"))("0.8.0");t.push(r);const o=hn(pn("module rec %s"))(n.Namespace);t.push(o);const i=a(n.Opens);try{for(;i["System.Collections.IEnumerator.MoveNext"]();){const e=i["System.Collections.Generic.IEnumerator`1.get_Current"](),n=hn(pn("open %s"))(e);t.push(n)}}finally{i.Dispose()}et(n.AbbrevTypes)||(t.push(""),at((e=>{t.push(e)}),n.AbbrevTypes)),t.push("");const s=a(n.Files);try{for(;s["System.Collections.IEnumerator.MoveNext"]();)at((e=>{ts(t,"",e)}),Tt((e=>nt(e.Types)>0),s["System.Collections.Generic.IEnumerator`1.get_Current"]().Modules))}finally{s.Dispose()}return t}(0,e));try{for(;t["System.Collections.IEnumerator.MoveNext"]();){const e=t["System.Collections.Generic.IEnumerator`1.get_Current"]();n.push(e)}}finally{t.Dispose()}return En("\n",n)}(function(e){const n="module.d.ts";return Ga(new Ua(1,new Fa(n,wi.createSourceFile(n,e,2,!0))))}(e))}function dd(e,n,t){return Tl(Qn(new vl(5,Qn(new Ja(40,(e=>{t(new ld(2,n))}))))),Qn(e))}function ud(e,n){const t=0===e.HtmlEditorState.tag&&0===e.FSharpEditorState.tag;return Za.createElement("div",{},function(e){return function(e,n){return ml(ll(e,((e,n)=>{switch(n.tag){case 3:case 4:case 2:case 5:return pl(e,n);case 0:return ul(e,tl(n.fields[0]));case 6:return dl(e,n.fields[0]);case 7:return ul(e,n.fields[0]);case 8:return fl(e,n.fields[0]);default:return pl(e,n)}}),"navbar"),((e,n)=>Za.createElement("nav",Ii(e,1),...n)),n)}(Qn(new bl(3)),dt([(o=Zn(),i=Qn(Tl(Zn(),Qn(Za.createElement("strong",{},"ts2fable")))),n=(e,n)=>Za.createElement("div",Ii(e,1),...n),t=o,r=i,ml(ll(t,((e,n)=>hl(e,n)),"navbar-brand"),n,r)),wl(Zn(),Qn(xl(dt([new vl(3),new vl(2)]),dt([Sl(Zn(),Qn("Samples")),El(Zn(),dt([dd("Monaco","/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Type definitions for monaco-editor v0.10.1\n * Released under the MIT license\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\ndeclare module monaco {\n\n interface Thenable {\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => TResult | Thenable): Thenable;\n then(onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => void): Thenable;\n }\n\n export interface IDisposable {\n dispose(): void;\n }\n\n export interface IEvent {\n (listener: (e: T) => any, thisArg?: any): IDisposable;\n }\n\n /**\n * A helper that allows to emit and listen to typed events\n */\n export class Emitter {\n constructor();\n readonly event: IEvent;\n fire(event?: T): void;\n dispose(): void;\n }\n\n export enum Severity {\n Ignore = 0,\n Info = 1,\n Warning = 2,\n Error = 3,\n }\n\n\n\n /**\n * The value callback to complete a promise\n */\n export interface TValueCallback {\n (value: T | Thenable): void;\n }\n\n\n export interface ProgressCallback {\n (progress: any): any;\n }\n\n\n /**\n * A Promise implementation that supports progress and cancelation.\n */\n export class Promise {\n\n constructor(init: (complete: TValueCallback, error: (err: any) => void, progress: ProgressCallback) => void, oncancel?: any);\n\n public then(success?: (value: V) => Promise, error?: (err: any) => Promise, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise, error?: (err: any) => Promise | U, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise, error?: (err: any) => U, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise, error?: (err: any) => void, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise | U, error?: (err: any) => Promise, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise | U, error?: (err: any) => Promise | U, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise | U, error?: (err: any) => U, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => Promise | U, error?: (err: any) => void, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => U, error?: (err: any) => Promise, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => U, error?: (err: any) => Promise | U, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => U, error?: (err: any) => U, progress?: ProgressCallback): Promise;\n public then(success?: (value: V) => U, error?: (err: any) => void, progress?: ProgressCallback): Promise;\n\n public done(success?: (value: V) => void, error?: (err: any) => any, progress?: ProgressCallback): void;\n public cancel(): void;\n\n public static as(value: null): Promise;\n public static as(value: undefined): Promise;\n public static as(value: Promise): Promise;\n public static as(value: Thenable): Thenable;\n public static as(value: ValueType): Promise;\n\n public static is(value: any): value is Thenable;\n public static timeout(delay: number): Promise;\n public static join(promises: Promise[]): Promise;\n public static join(promises: Thenable[]): Thenable;\n public static join(promises: { [n: string]: Promise }): Promise<{ [n: string]: ValueType }>;\n public static any(promises: Promise[]): Promise<{ key: string; value: Promise; }>;\n\n public static wrap(value: Thenable): Promise;\n public static wrap(value: ValueType): Promise;\n\n public static wrapError(error: Error): Promise;\n }\n\n export class CancellationTokenSource {\n readonly token: CancellationToken;\n cancel(): void;\n dispose(): void;\n }\n\n export interface CancellationToken {\n readonly isCancellationRequested: boolean;\n /**\n * An event emitted when cancellation is requested\n * @event\n */\n readonly onCancellationRequested: IEvent;\n }\n /**\n * Uniform Resource Identifier (Uri) http://tools.ietf.org/html/rfc3986.\n * This class is a simple parser which creates the basic component paths\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\n * and encoding.\n *\n * foo://example.com:8042/over/there?name=ferret#nose\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\n * | | | | |\n * scheme authority path query fragment\n * | _____________________|__\n * / \\ / \\\n * urn:example:animal:ferret:nose\n *\n *\n */\n export class Uri {\n static isUri(thing: any): thing is Uri;\n /**\n * scheme is the 'http' part of 'http://www.msft.com/some/path?query#fragment'.\n * The part before the first colon.\n */\n readonly scheme: string;\n /**\n * authority is the 'www.msft.com' part of 'http://www.msft.com/some/path?query#fragment'.\n * The part between the first double slashes and the next slash.\n */\n readonly authority: string;\n /**\n * path is the '/some/path' part of 'http://www.msft.com/some/path?query#fragment'.\n */\n readonly path: string;\n /**\n * query is the 'query' part of 'http://www.msft.com/some/path?query#fragment'.\n */\n readonly query: string;\n /**\n * fragment is the 'fragment' part of 'http://www.msft.com/some/path?query#fragment'.\n */\n readonly fragment: string;\n /**\n * Returns a string representing the corresponding file system path of this Uri.\n * Will handle UNC paths and normalize windows drive letters to lower-case. Also\n * uses the platform specific path separator. Will *not* validate the path for\n * invalid characters and semantics. Will *not* look at the scheme of this Uri.\n */\n readonly fsPath: string;\n with(change: {\n scheme?: string;\n authority?: string;\n path?: string;\n query?: string;\n fragment?: string;\n }): Uri;\n static parse(value: string): Uri;\n static file(path: string): Uri;\n static from(components: {\n scheme?: string;\n authority?: string;\n path?: string;\n query?: string;\n fragment?: string;\n }): Uri;\n /**\n *\n * @param skipEncoding Do not encode the result, default is `false`\n */\n toString(skipEncoding?: boolean): string;\n toJSON(): any;\n static revive(data: any): Uri;\n }\n\n /**\n * Virtual Key Codes, the value does not hold any inherent meaning.\n * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\n * But these are \"more general\", as they should work across browsers & OS`s.\n */\n export enum KeyCode {\n /**\n * Placed first to cover the 0 value of the enum.\n */\n Unknown = 0,\n Backspace = 1,\n Tab = 2,\n Enter = 3,\n Shift = 4,\n Ctrl = 5,\n Alt = 6,\n PauseBreak = 7,\n CapsLock = 8,\n Escape = 9,\n Space = 10,\n PageUp = 11,\n PageDown = 12,\n End = 13,\n Home = 14,\n LeftArrow = 15,\n UpArrow = 16,\n RightArrow = 17,\n DownArrow = 18,\n Insert = 19,\n Delete = 20,\n KEY_0 = 21,\n KEY_1 = 22,\n KEY_2 = 23,\n KEY_3 = 24,\n KEY_4 = 25,\n KEY_5 = 26,\n KEY_6 = 27,\n KEY_7 = 28,\n KEY_8 = 29,\n KEY_9 = 30,\n KEY_A = 31,\n KEY_B = 32,\n KEY_C = 33,\n KEY_D = 34,\n KEY_E = 35,\n KEY_F = 36,\n KEY_G = 37,\n KEY_H = 38,\n KEY_I = 39,\n KEY_J = 40,\n KEY_K = 41,\n KEY_L = 42,\n KEY_M = 43,\n KEY_N = 44,\n KEY_O = 45,\n KEY_P = 46,\n KEY_Q = 47,\n KEY_R = 48,\n KEY_S = 49,\n KEY_T = 50,\n KEY_U = 51,\n KEY_V = 52,\n KEY_W = 53,\n KEY_X = 54,\n KEY_Y = 55,\n KEY_Z = 56,\n Meta = 57,\n ContextMenu = 58,\n F1 = 59,\n F2 = 60,\n F3 = 61,\n F4 = 62,\n F5 = 63,\n F6 = 64,\n F7 = 65,\n F8 = 66,\n F9 = 67,\n F10 = 68,\n F11 = 69,\n F12 = 70,\n F13 = 71,\n F14 = 72,\n F15 = 73,\n F16 = 74,\n F17 = 75,\n F18 = 76,\n F19 = 77,\n NumLock = 78,\n ScrollLock = 79,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the ';:' key\n */\n US_SEMICOLON = 80,\n /**\n * For any country/region, the '+' key\n * For the US standard keyboard, the '=+' key\n */\n US_EQUAL = 81,\n /**\n * For any country/region, the ',' key\n * For the US standard keyboard, the ',<' key\n */\n US_COMMA = 82,\n /**\n * For any country/region, the '-' key\n * For the US standard keyboard, the '-_' key\n */\n US_MINUS = 83,\n /**\n * For any country/region, the '.' key\n * For the US standard keyboard, the '.>' key\n */\n US_DOT = 84,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '/?' key\n */\n US_SLASH = 85,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '`~' key\n */\n US_BACKTICK = 86,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '[{' key\n */\n US_OPEN_SQUARE_BRACKET = 87,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '\\|' key\n */\n US_BACKSLASH = 88,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the ']}' key\n */\n US_CLOSE_SQUARE_BRACKET = 89,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the ''\"' key\n */\n US_QUOTE = 90,\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n */\n OEM_8 = 91,\n /**\n * Either the angle bracket key or the backslash key on the RT 102-key keyboard.\n */\n OEM_102 = 92,\n NUMPAD_0 = 93,\n NUMPAD_1 = 94,\n NUMPAD_2 = 95,\n NUMPAD_3 = 96,\n NUMPAD_4 = 97,\n NUMPAD_5 = 98,\n NUMPAD_6 = 99,\n NUMPAD_7 = 100,\n NUMPAD_8 = 101,\n NUMPAD_9 = 102,\n NUMPAD_MULTIPLY = 103,\n NUMPAD_ADD = 104,\n NUMPAD_SEPARATOR = 105,\n NUMPAD_SUBTRACT = 106,\n NUMPAD_DECIMAL = 107,\n NUMPAD_DIVIDE = 108,\n /**\n * Cover all key codes when IME is processing input.\n */\n KEY_IN_COMPOSITION = 109,\n ABNT_C1 = 110,\n ABNT_C2 = 111,\n /**\n * Placed last to cover the length of the enum.\n * Please do not depend on this value!\n */\n MAX_VALUE = 112,\n }\n\n export class KeyMod {\n static readonly CtrlCmd: number;\n static readonly Shift: number;\n static readonly Alt: number;\n static readonly WinCtrl: number;\n static chord(firstPart: number, secondPart: number): number;\n }\n /**\n * MarkedString can be used to render human readable text. It is either a markdown string\n * or a code-block that provides a language and a code snippet. Note that\n * markdown strings will be sanitized - that means html will be escaped.\n */\n export type MarkedString = string | {\n readonly language: string;\n readonly value: string;\n };\n\n export interface IKeyboardEvent {\n readonly browserEvent: KeyboardEvent;\n readonly target: HTMLElement;\n readonly ctrlKey: boolean;\n readonly shiftKey: boolean;\n readonly altKey: boolean;\n readonly metaKey: boolean;\n readonly keyCode: KeyCode;\n readonly code: string;\n equals(keybinding: number): boolean;\n preventDefault(): void;\n stopPropagation(): void;\n }\n export interface IMouseEvent {\n readonly browserEvent: MouseEvent;\n readonly leftButton: boolean;\n readonly middleButton: boolean;\n readonly rightButton: boolean;\n readonly target: HTMLElement;\n readonly detail: number;\n readonly posx: number;\n readonly posy: number;\n readonly ctrlKey: boolean;\n readonly shiftKey: boolean;\n readonly altKey: boolean;\n readonly metaKey: boolean;\n readonly timestamp: number;\n preventDefault(): void;\n stopPropagation(): void;\n }\n\n export interface IScrollEvent {\n readonly scrollTop: number;\n readonly scrollLeft: number;\n readonly scrollWidth: number;\n readonly scrollHeight: number;\n readonly scrollTopChanged: boolean;\n readonly scrollLeftChanged: boolean;\n readonly scrollWidthChanged: boolean;\n readonly scrollHeightChanged: boolean;\n }\n /**\n * A position in the editor. This interface is suitable for serialization.\n */\n export interface IPosition {\n /**\n * line number (starts at 1)\n */\n readonly lineNumber: number;\n /**\n * column (the first character in a line is between column 1 and column 2)\n */\n readonly column: number;\n }\n\n /**\n * A position in the editor.\n */\n export class Position {\n /**\n * line number (starts at 1)\n */\n readonly lineNumber: number;\n /**\n * column (the first character in a line is between column 1 and column 2)\n */\n readonly column: number;\n constructor(lineNumber: number, column: number);\n /**\n * Test if this position equals other position\n */\n equals(other: IPosition): boolean;\n /**\n * Test if position `a` equals position `b`\n */\n static equals(a: IPosition, b: IPosition): boolean;\n /**\n * Test if this position is before other position.\n * If the two positions are equal, the result will be false.\n */\n isBefore(other: IPosition): boolean;\n /**\n * Test if position `a` is before position `b`.\n * If the two positions are equal, the result will be false.\n */\n static isBefore(a: IPosition, b: IPosition): boolean;\n /**\n * Test if this position is before other position.\n * If the two positions are equal, the result will be true.\n */\n isBeforeOrEqual(other: IPosition): boolean;\n /**\n * Test if position `a` is before position `b`.\n * If the two positions are equal, the result will be true.\n */\n static isBeforeOrEqual(a: IPosition, b: IPosition): boolean;\n /**\n * A function that compares positions, useful for sorting\n */\n static compare(a: IPosition, b: IPosition): number;\n /**\n * Clone this position.\n */\n clone(): Position;\n /**\n * Convert to a human-readable representation.\n */\n toString(): string;\n /**\n * Create a `Position` from an `IPosition`.\n */\n static lift(pos: IPosition): Position;\n /**\n * Test if `obj` is an `IPosition`.\n */\n static isIPosition(obj: any): obj is IPosition;\n }\n\n /**\n * A range in the editor. This interface is suitable for serialization.\n */\n export interface IRange {\n /**\n * Line number on which the range starts (starts at 1).\n */\n readonly startLineNumber: number;\n /**\n * Column on which the range starts in line `startLineNumber` (starts at 1).\n */\n readonly startColumn: number;\n /**\n * Line number on which the range ends.\n */\n readonly endLineNumber: number;\n /**\n * Column on which the range ends in line `endLineNumber`.\n */\n readonly endColumn: number;\n }\n\n /**\n * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn)\n */\n export class Range {\n /**\n * Line number on which the range starts (starts at 1).\n */\n readonly startLineNumber: number;\n /**\n * Column on which the range starts in line `startLineNumber` (starts at 1).\n */\n readonly startColumn: number;\n /**\n * Line number on which the range ends.\n */\n readonly endLineNumber: number;\n /**\n * Column on which the range ends in line `endLineNumber`.\n */\n readonly endColumn: number;\n constructor(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number);\n /**\n * Test if this range is empty.\n */\n isEmpty(): boolean;\n /**\n * Test if `range` is empty.\n */\n static isEmpty(range: IRange): boolean;\n /**\n * Test if position is in this range. If the position is at the edges, will return true.\n */\n containsPosition(position: IPosition): boolean;\n /**\n * Test if `position` is in `range`. If the position is at the edges, will return true.\n */\n static containsPosition(range: IRange, position: IPosition): boolean;\n /**\n * Test if range is in this range. If the range is equal to this range, will return true.\n */\n containsRange(range: IRange): boolean;\n /**\n * Test if `otherRange` is in `range`. If the ranges are equal, will return true.\n */\n static containsRange(range: IRange, otherRange: IRange): boolean;\n /**\n * A reunion of the two ranges.\n * The smallest position will be used as the start point, and the largest one as the end point.\n */\n plusRange(range: IRange): Range;\n /**\n * A reunion of the two ranges.\n * The smallest position will be used as the start point, and the largest one as the end point.\n */\n static plusRange(a: IRange, b: IRange): Range;\n /**\n * A intersection of the two ranges.\n */\n intersectRanges(range: IRange): Range;\n /**\n * A intersection of the two ranges.\n */\n static intersectRanges(a: IRange, b: IRange): Range;\n /**\n * Test if this range equals other.\n */\n equalsRange(other: IRange): boolean;\n /**\n * Test if range `a` equals `b`.\n */\n static equalsRange(a: IRange, b: IRange): boolean;\n /**\n * Return the end position (which will be after or equal to the start position)\n */\n getEndPosition(): Position;\n /**\n * Return the start position (which will be before or equal to the end position)\n */\n getStartPosition(): Position;\n /**\n * Clone this range.\n */\n cloneRange(): Range;\n /**\n * Transform to a user presentable string representation.\n */\n toString(): string;\n /**\n * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.\n */\n setEndPosition(endLineNumber: number, endColumn: number): Range;\n /**\n * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.\n */\n setStartPosition(startLineNumber: number, startColumn: number): Range;\n /**\n * Create a new empty range using this range's start position.\n */\n collapseToStart(): Range;\n /**\n * Create a new empty range using this range's start position.\n */\n static collapseToStart(range: IRange): Range;\n static fromPositions(start: IPosition, end?: IPosition): Range;\n /**\n * Create a `Range` from an `IRange`.\n */\n static lift(range: IRange): Range;\n /**\n * Test if `obj` is an `IRange`.\n */\n static isIRange(obj: any): obj is IRange;\n /**\n * Test if the two ranges are touching in any way.\n */\n static areIntersectingOrTouching(a: IRange, b: IRange): boolean;\n /**\n * A function that compares ranges, useful for sorting ranges\n * It will first compare ranges on the startPosition and then on the endPosition\n */\n static compareRangesUsingStarts(a: IRange, b: IRange): number;\n /**\n * A function that compares ranges, useful for sorting ranges\n * It will first compare ranges on the endPosition and then on the startPosition\n */\n static compareRangesUsingEnds(a: IRange, b: IRange): number;\n /**\n * Test if the range spans multiple lines.\n */\n static spansMultipleLines(range: IRange): boolean;\n }\n\n /**\n * A selection in the editor.\n * The selection is a range that has an orientation.\n */\n export interface ISelection {\n /**\n * The line number on which the selection has started.\n */\n readonly selectionStartLineNumber: number;\n /**\n * The column on `selectionStartLineNumber` where the selection has started.\n */\n readonly selectionStartColumn: number;\n /**\n * The line number on which the selection has ended.\n */\n readonly positionLineNumber: number;\n /**\n * The column on `positionLineNumber` where the selection has ended.\n */\n readonly positionColumn: number;\n }\n\n /**\n * A selection in the editor.\n * The selection is a range that has an orientation.\n */\n export class Selection extends Range {\n /**\n * The line number on which the selection has started.\n */\n readonly selectionStartLineNumber: number;\n /**\n * The column on `selectionStartLineNumber` where the selection has started.\n */\n readonly selectionStartColumn: number;\n /**\n * The line number on which the selection has ended.\n */\n readonly positionLineNumber: number;\n /**\n * The column on `positionLineNumber` where the selection has ended.\n */\n readonly positionColumn: number;\n constructor(selectionStartLineNumber: number, selectionStartColumn: number, positionLineNumber: number, positionColumn: number);\n /**\n * Clone this selection.\n */\n clone(): Selection;\n /**\n * Transform to a human-readable representation.\n */\n toString(): string;\n /**\n * Test if equals other selection.\n */\n equalsSelection(other: ISelection): boolean;\n /**\n * Test if the two selections are equal.\n */\n static selectionsEqual(a: ISelection, b: ISelection): boolean;\n /**\n * Get directions (LTR or RTL).\n */\n getDirection(): SelectionDirection;\n /**\n * Create a new selection with a different `positionLineNumber` and `positionColumn`.\n */\n setEndPosition(endLineNumber: number, endColumn: number): Selection;\n /**\n * Get the position at `positionLineNumber` and `positionColumn`.\n */\n getPosition(): Position;\n /**\n * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`.\n */\n setStartPosition(startLineNumber: number, startColumn: number): Selection;\n /**\n * Create a `Selection` from one or two positions\n */\n static fromPositions(start: IPosition, end?: IPosition): Selection;\n /**\n * Create a `Selection` from an `ISelection`.\n */\n static liftSelection(sel: ISelection): Selection;\n /**\n * `a` equals `b`.\n */\n static selectionsArrEqual(a: ISelection[], b: ISelection[]): boolean;\n /**\n * Test if `obj` is an `ISelection`.\n */\n static isISelection(obj: any): obj is ISelection;\n /**\n * Create with a direction.\n */\n static createWithDirection(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, direction: SelectionDirection): Selection;\n }\n\n /**\n * The direction of a selection.\n */\n export enum SelectionDirection {\n /**\n * The selection starts above where it ends.\n */\n LTR = 0,\n /**\n * The selection starts below where it ends.\n */\n RTL = 1,\n }\n\n export class Token {\n _tokenBrand: void;\n readonly offset: number;\n readonly type: string;\n readonly language: string;\n constructor(offset: number, type: string, language: string);\n toString(): string;\n }\n}\n\ndeclare module monaco.editor {\n\n\n /**\n * Create a new editor under `domElement`.\n * `domElement` should be empty (not contain other dom nodes).\n * The editor will read the size of `domElement`.\n */\n export function create(domElement: HTMLElement, options?: IEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneCodeEditor;\n\n /**\n * Emitted when an editor is created.\n * Creating a diff editor might cause this listener to be invoked with the two editors.\n * @event\n */\n export function onDidCreateEditor(listener: (codeEditor: ICodeEditor) => void): IDisposable;\n\n /**\n * Create a new diff editor under `domElement`.\n * `domElement` should be empty (not contain other dom nodes).\n * The editor will read the size of `domElement`.\n */\n export function createDiffEditor(domElement: HTMLElement, options?: IDiffEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneDiffEditor;\n\n export interface IDiffNavigator {\n revealFirst: boolean;\n canNavigate(): boolean;\n next(): void;\n previous(): void;\n dispose(): void;\n }\n\n export interface IDiffNavigatorOptions {\n readonly followsCaret?: boolean;\n readonly ignoreCharChanges?: boolean;\n readonly alwaysRevealFirst?: boolean;\n }\n\n export function createDiffNavigator(diffEditor: IStandaloneDiffEditor, opts?: IDiffNavigatorOptions): IDiffNavigator;\n\n /**\n * Create a new editor model.\n * You can specify the language that should be set for this model or let the language be inferred from the `uri`.\n */\n export function createModel(value: string, language?: string, uri?: Uri): IModel;\n\n /**\n * Change the language for a model.\n */\n export function setModelLanguage(model: IModel, language: string): void;\n\n /**\n * Set the markers for a model.\n */\n export function setModelMarkers(model: IModel, owner: string, markers: IMarkerData[]): void;\n\n /**\n * Get markers for owner ant/or resource\n * @returns {IMarkerData[]} list of markers\n * @param filter\n */\n export function getModelMarkers(filter: {\n owner?: string;\n resource?: Uri;\n take?: number;\n }): IMarker[];\n\n /**\n * Get the model that has `uri` if it exists.\n */\n export function getModel(uri: Uri): IModel;\n\n /**\n * Get all the created models.\n */\n export function getModels(): IModel[];\n\n /**\n * Emitted when a model is created.\n * @event\n */\n export function onDidCreateModel(listener: (model: IModel) => void): IDisposable;\n\n /**\n * Emitted right before a model is disposed.\n * @event\n */\n export function onWillDisposeModel(listener: (model: IModel) => void): IDisposable;\n\n /**\n * Emitted when a different language is set to a model.\n * @event\n */\n export function onDidChangeModelLanguage(listener: (e: {\n readonly model: IModel;\n readonly oldLanguage: string;\n }) => void): IDisposable;\n\n /**\n * Create a new web worker that has model syncing capabilities built in.\n * Specify an AMD module to load that will `create` an object that will be proxied.\n */\n export function createWebWorker(opts: IWebWorkerOptions): MonacoWebWorker;\n\n /**\n * Colorize the contents of `domNode` using attribute `data-lang`.\n */\n export function colorizeElement(domNode: HTMLElement, options: IColorizerElementOptions): Promise;\n\n /**\n * Colorize `text` using language `languageId`.\n */\n export function colorize(text: string, languageId: string, options: IColorizerOptions): Promise;\n\n /**\n * Colorize a line in a model.\n */\n export function colorizeModelLine(model: IModel, lineNumber: number, tabSize?: number): string;\n\n /**\n * Tokenize `text` using language `languageId`\n */\n export function tokenize(text: string, languageId: string): Token[][];\n\n /**\n * Define a new theme.\n */\n export function defineTheme(themeName: string, themeData: IStandaloneThemeData): void;\n\n /**\n * Switches to a theme.\n */\n export function setTheme(themeName: string): void;\n\n export type BuiltinTheme = 'vs' | 'vs-dark' | 'hc-black';\n\n export interface IStandaloneThemeData {\n base: BuiltinTheme;\n inherit: boolean;\n rules: ITokenThemeRule[];\n colors: IColors;\n }\n\n export type IColors = {\n [colorId: string]: string;\n };\n\n export interface ITokenThemeRule {\n token: string;\n foreground?: string;\n background?: string;\n fontStyle?: string;\n }\n\n /**\n * A web worker that can provide a proxy to an arbitrary file.\n */\n export interface MonacoWebWorker {\n /**\n * Terminate the web worker, thus invalidating the returned proxy.\n */\n dispose(): void;\n /**\n * Get a proxy to the arbitrary loaded code.\n */\n getProxy(): Promise;\n /**\n * Synchronize (send) the models at `resources` to the web worker,\n * making them available in the monaco.worker.getMirrorModels().\n */\n withSyncedResources(resources: Uri[]): Promise;\n }\n\n export interface IWebWorkerOptions {\n /**\n * The AMD moduleId to load.\n * It should export a function `create` that should return the exported proxy.\n */\n moduleId: string;\n /**\n * The data to send over when calling create on the module.\n */\n createData?: any;\n /**\n * A label to be used to identify the web worker for debugging purposes.\n */\n label?: string;\n }\n\n /**\n * The options to create an editor.\n */\n export interface IEditorConstructionOptions extends IEditorOptions {\n /**\n * The initial model associated with this code editor.\n */\n model?: IModel;\n /**\n * The initial value of the auto created model in the editor.\n * To not create automatically a model, use `model: null`.\n */\n value?: string;\n /**\n * The initial language of the auto created model in the editor.\n * To not create automatically a model, use `model: null`.\n */\n language?: string;\n /**\n * Initial theme to be used for rendering.\n * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black'.\n * You can create custom themes via `monaco.editor.defineTheme`.\n * To switch a theme, use `monaco.editor.setTheme`\n */\n theme?: string;\n /**\n * An URL to open when Ctrl+H (Windows and Linux) or Cmd+H (OSX) is pressed in\n * the accessibility help dialog in the editor.\n *\n * Defaults to \"https://go.microsoft.com/fwlink/?linkid=852450\"\n */\n accessibilityHelpUrl?: string;\n }\n\n /**\n * The options to create a diff editor.\n */\n export interface IDiffEditorConstructionOptions extends IDiffEditorOptions {\n /**\n * Initial theme to be used for rendering.\n * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black'.\n * You can create custom themes via `monaco.editor.defineTheme`.\n * To switch a theme, use `monaco.editor.setTheme`\n */\n theme?: string;\n }\n\n export interface IStandaloneCodeEditor extends ICodeEditor {\n addCommand(keybinding: number, handler: ICommandHandler, context: string): string;\n createContextKey(key: string, defaultValue: T): IContextKey;\n addAction(descriptor: IActionDescriptor): IDisposable;\n }\n\n export interface IStandaloneDiffEditor extends IDiffEditor {\n addCommand(keybinding: number, handler: ICommandHandler, context: string): string;\n createContextKey(key: string, defaultValue: T): IContextKey;\n addAction(descriptor: IActionDescriptor): IDisposable;\n getOriginalEditor(): IStandaloneCodeEditor;\n getModifiedEditor(): IStandaloneCodeEditor;\n }\n export interface ICommandHandler {\n (...args: any[]): void;\n }\n\n export interface IContextKey {\n set(value: T): void;\n reset(): void;\n get(): T;\n }\n\n export interface IEditorOverrideServices {\n [index: string]: any;\n }\n\n export interface IMarker {\n owner: string;\n resource: Uri;\n severity: Severity;\n code?: string;\n message: string;\n source?: string;\n startLineNumber: number;\n startColumn: number;\n endLineNumber: number;\n endColumn: number;\n }\n\n /**\n * A structure defining a problem/warning/etc.\n */\n export interface IMarkerData {\n code?: string;\n severity: Severity;\n message: string;\n source?: string;\n startLineNumber: number;\n startColumn: number;\n endLineNumber: number;\n endColumn: number;\n }\n\n export interface IColorizerOptions {\n tabSize?: number;\n }\n\n export interface IColorizerElementOptions extends IColorizerOptions {\n theme?: string;\n mimeType?: string;\n }\n\n export enum ScrollbarVisibility {\n Auto = 1,\n Hidden = 2,\n Visible = 3,\n }\n\n export interface ThemeColor {\n id: string;\n }\n\n /**\n * Vertical Lane in the overview ruler of the editor.\n */\n export enum OverviewRulerLane {\n Left = 1,\n Center = 2,\n Right = 4,\n Full = 7,\n }\n\n /**\n * Options for rendering a model decoration in the overview ruler.\n */\n export interface IModelDecorationOverviewRulerOptions {\n /**\n * CSS color to render in the overview ruler.\n * e.g.: rgba(100, 100, 100, 0.5) or a color from the color registry\n */\n color: string | ThemeColor;\n /**\n * CSS color to render in the overview ruler.\n * e.g.: rgba(100, 100, 100, 0.5) or a color from the color registry\n */\n darkColor: string | ThemeColor;\n /**\n * CSS color to render in the overview ruler.\n * e.g.: rgba(100, 100, 100, 0.5) or a color from the color registry\n */\n hcColor?: string | ThemeColor;\n /**\n * The position in the overview ruler.\n */\n position: OverviewRulerLane;\n }\n\n /**\n * Options for a model decoration.\n */\n export interface IModelDecorationOptions {\n /**\n * Customize the growing behavior of the decoration when typing at the edges of the decoration.\n * Defaults to TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges\n */\n stickiness?: TrackedRangeStickiness;\n /**\n * CSS class name describing the decoration.\n */\n className?: string;\n /**\n * Message to be rendered when hovering over the glyph margin decoration.\n */\n glyphMarginHoverMessage?: MarkedString | MarkedString[];\n /**\n * Array of MarkedString to render as the decoration message.\n */\n hoverMessage?: MarkedString | MarkedString[];\n /**\n * Should the decoration expand to encompass a whole line.\n */\n isWholeLine?: boolean;\n /**\n * If set, render this decoration in the overview ruler.\n */\n overviewRuler?: IModelDecorationOverviewRulerOptions;\n /**\n * If set, the decoration will be rendered in the glyph margin with this CSS class name.\n */\n glyphMarginClassName?: string;\n /**\n * If set, the decoration will be rendered in the lines decorations with this CSS class name.\n */\n linesDecorationsClassName?: string;\n /**\n * If set, the decoration will be rendered in the margin (covering its full width) with this CSS class name.\n */\n marginClassName?: string;\n /**\n * If set, the decoration will be rendered inline with the text with this CSS class name.\n * Please use this only for CSS rules that must impact the text. For example, use `className`\n * to have a background color decoration.\n */\n inlineClassName?: string;\n /**\n * If set, the decoration will be rendered before the text with this CSS class name.\n */\n beforeContentClassName?: string;\n /**\n * If set, the decoration will be rendered after the text with this CSS class name.\n */\n afterContentClassName?: string;\n }\n\n /**\n * New model decorations.\n */\n export interface IModelDeltaDecoration {\n /**\n * Range that this decoration covers.\n */\n range: IRange;\n /**\n * Options associated with this decoration.\n */\n options: IModelDecorationOptions;\n }\n\n /**\n * A decoration in the model.\n */\n export interface IModelDecoration {\n /**\n * Identifier for a decoration.\n */\n readonly id: string;\n /**\n * Identifier for a decoration's owener.\n */\n readonly ownerId: number;\n /**\n * Range that this decoration covers.\n */\n readonly range: Range;\n /**\n * Options associated with this decoration.\n */\n readonly options: IModelDecorationOptions;\n /**\n * A flag describing if this is a problem decoration (e.g. warning/error).\n */\n readonly isForValidation: boolean;\n }\n\n /**\n * Word inside a model.\n */\n export interface IWordAtPosition {\n /**\n * The word.\n */\n readonly word: string;\n /**\n * The column where the word starts.\n */\n readonly startColumn: number;\n /**\n * The column where the word ends.\n */\n readonly endColumn: number;\n }\n\n /**\n * End of line character preference.\n */\n export enum EndOfLinePreference {\n /**\n * Use the end of line character identified in the text buffer.\n */\n TextDefined = 0,\n /**\n * Use line feed (\\n) as the end of line character.\n */\n LF = 1,\n /**\n * Use carriage return and line feed (\\r\\n) as the end of line character.\n */\n CRLF = 2,\n }\n\n /**\n * The default end of line to use when instantiating models.\n */\n export enum DefaultEndOfLine {\n /**\n * Use line feed (\\n) as the end of line character.\n */\n LF = 1,\n /**\n * Use carriage return and line feed (\\r\\n) as the end of line character.\n */\n CRLF = 2,\n }\n\n /**\n * End of line character preference.\n */\n export enum EndOfLineSequence {\n /**\n * Use line feed (\\n) as the end of line character.\n */\n LF = 0,\n /**\n * Use carriage return and line feed (\\r\\n) as the end of line character.\n */\n CRLF = 1,\n }\n\n /**\n * An identifier for a single edit operation.\n */\n export interface ISingleEditOperationIdentifier {\n /**\n * Identifier major\n */\n major: number;\n /**\n * Identifier minor\n */\n minor: number;\n }\n\n /**\n * A builder and helper for edit operations for a command.\n */\n export interface IEditOperationBuilder {\n /**\n * Add a new edit operation (a replace operation).\n * @param range The range to replace (delete). May be empty to represent a simple insert.\n * @param text The text to replace with. May be null to represent a simple delete.\n */\n addEditOperation(range: Range, text: string): void;\n /**\n * Add a new edit operation (a replace operation).\n * The inverse edits will be accessible in `ICursorStateComputerData.getInverseEditOperations()`\n * @param range The range to replace (delete). May be empty to represent a simple insert.\n * @param text The text to replace with. May be null to represent a simple delete.\n */\n addTrackedEditOperation(range: Range, text: string): void;\n /**\n * Track `selection` when applying edit operations.\n * A best effort will be made to not grow/expand the selection.\n * An empty selection will clamp to a nearby character.\n * @param selection The selection to track.\n * @param trackPreviousOnEmpty If set, and the selection is empty, indicates whether the selection\n * should clamp to the previous or the next character.\n * @return A unique identifer.\n */\n trackSelection(selection: Selection, trackPreviousOnEmpty?: boolean): string;\n }\n\n /**\n * A helper for computing cursor state after a command.\n */\n export interface ICursorStateComputerData {\n /**\n * Get the inverse edit operations of the added edit operations.\n */\n getInverseEditOperations(): IIdentifiedSingleEditOperation[];\n /**\n * Get a previously tracked selection.\n * @param id The unique identifier returned by `trackSelection`.\n * @return The selection.\n */\n getTrackedSelection(id: string): Selection;\n }\n\n /**\n * A command that modifies text / cursor state on a model.\n */\n export interface ICommand {\n /**\n * Get the edit operations needed to execute this command.\n * @param model The model the command will execute on.\n * @param builder A helper to collect the needed edit operations and to track selections.\n */\n getEditOperations(model: ITokenizedModel, builder: IEditOperationBuilder): void;\n /**\n * Compute the cursor state after the edit operations were applied.\n * @param model The model the commad has executed on.\n * @param helper A helper to get inverse edit operations and to get previously tracked selections.\n * @return The cursor state after the command executed.\n */\n computeCursorState(model: ITokenizedModel, helper: ICursorStateComputerData): Selection;\n }\n\n /**\n * A single edit operation, that acts as a simple replace.\n * i.e. Replace text at `range` with `text` in model.\n */\n export interface ISingleEditOperation {\n /**\n * The range to replace. This can be empty to emulate a simple insert.\n */\n range: IRange;\n /**\n * The text to replace with. This can be null to emulate a simple delete.\n */\n text: string;\n /**\n * This indicates that this operation has \"insert\" semantics.\n * i.e. forceMoveMarkers = true => if `range` is collapsed, all markers at the position will be moved.\n */\n forceMoveMarkers?: boolean;\n }\n\n /**\n * A single edit operation, that has an identifier.\n */\n export interface IIdentifiedSingleEditOperation {\n /**\n * An identifier associated with this single edit operation.\n */\n identifier: ISingleEditOperationIdentifier;\n /**\n * The range to replace. This can be empty to emulate a simple insert.\n */\n range: Range;\n /**\n * The text to replace with. This can be null to emulate a simple delete.\n */\n text: string;\n /**\n * This indicates that this operation has \"insert\" semantics.\n * i.e. forceMoveMarkers = true => if `range` is collapsed, all markers at the position will be moved.\n */\n forceMoveMarkers: boolean;\n /**\n * This indicates that this operation is inserting automatic whitespace\n * that can be removed on next model edit operation if `config.trimAutoWhitespace` is true.\n */\n isAutoWhitespaceEdit?: boolean;\n }\n\n /**\n * A callback that can compute the cursor state after applying a series of edit operations.\n */\n export interface ICursorStateComputer {\n /**\n * A callback that can compute the resulting cursors state after some edit operations have been executed.\n */\n (inverseEditOperations: IIdentifiedSingleEditOperation[]): Selection[];\n }\n\n export class TextModelResolvedOptions {\n _textModelResolvedOptionsBrand: void;\n readonly tabSize: number;\n readonly insertSpaces: boolean;\n readonly defaultEOL: DefaultEndOfLine;\n readonly trimAutoWhitespace: boolean;\n }\n\n export interface ITextModelUpdateOptions {\n tabSize?: number;\n insertSpaces?: boolean;\n trimAutoWhitespace?: boolean;\n }\n\n /**\n * A textual read-only model.\n */\n export interface ITextModel {\n /**\n * Get the resolved options for this model.\n */\n getOptions(): TextModelResolvedOptions;\n /**\n * Get the current version id of the model.\n * Anytime a change happens to the model (even undo/redo),\n * the version id is incremented.\n */\n getVersionId(): number;\n /**\n * Get the alternative version id of the model.\n * This alternative version id is not always incremented,\n * it will return the same values in the case of undo-redo.\n */\n getAlternativeVersionId(): number;\n /**\n * Replace the entire text buffer value contained in this model.\n */\n setValue(newValue: string): void;\n /**\n * Get the text stored in this model.\n * @param eol The end of line character preference. Defaults to `EndOfLinePreference.TextDefined`.\n * @param preserverBOM Preserve a BOM character if it was detected when the model was constructed.\n * @return The text.\n */\n getValue(eol?: EndOfLinePreference, preserveBOM?: boolean): string;\n /**\n * Get the length of the text stored in this model.\n */\n getValueLength(eol?: EndOfLinePreference, preserveBOM?: boolean): number;\n /**\n * Get the text in a certain range.\n * @param range The range describing what text to get.\n * @param eol The end of line character preference. This will only be used for multiline ranges. Defaults to `EndOfLinePreference.TextDefined`.\n * @return The text.\n */\n getValueInRange(range: IRange, eol?: EndOfLinePreference): string;\n /**\n * Get the length of text in a certain range.\n * @param range The range describing what text length to get.\n * @return The text length.\n */\n getValueLengthInRange(range: IRange): number;\n /**\n * Get the number of lines in the model.\n */\n getLineCount(): number;\n /**\n * Get the text for a certain line.\n */\n getLineContent(lineNumber: number): string;\n /**\n * Get the text for all lines.\n */\n getLinesContent(): string[];\n /**\n * Get the end of line sequence predominantly used in the text buffer.\n * @return EOL char sequence (e.g.: '\\n' or '\\r\\n').\n */\n getEOL(): string;\n /**\n * Change the end of line sequence used in the text buffer.\n */\n setEOL(eol: EndOfLineSequence): void;\n /**\n * Get the minimum legal column for line at `lineNumber`\n */\n getLineMinColumn(lineNumber: number): number;\n /**\n * Get the maximum legal column for line at `lineNumber`\n */\n getLineMaxColumn(lineNumber: number): number;\n /**\n * Returns the column before the first non whitespace character for line at `lineNumber`.\n * Returns 0 if line is empty or contains only whitespace.\n */\n getLineFirstNonWhitespaceColumn(lineNumber: number): number;\n /**\n * Returns the column after the last non whitespace character for line at `lineNumber`.\n * Returns 0 if line is empty or contains only whitespace.\n */\n getLineLastNonWhitespaceColumn(lineNumber: number): number;\n /**\n * Create a valid position,\n */\n validatePosition(position: IPosition): Position;\n /**\n * Advances the given position by the given offest (negative offsets are also accepted)\n * and returns it as a new valid position.\n *\n * If the offset and position are such that their combination goes beyond the beginning or\n * end of the model, throws an exception.\n *\n * If the ofsset is such that the new position would be in the middle of a multi-byte\n * line terminator, throws an exception.\n */\n modifyPosition(position: IPosition, offset: number): Position;\n /**\n * Create a valid range.\n */\n validateRange(range: IRange): Range;\n /**\n * Converts the position to a zero-based offset.\n *\n * The position will be [adjusted](#TextDocument.validatePosition).\n *\n * @param position A position.\n * @return A valid zero-based offset.\n */\n getOffsetAt(position: IPosition): number;\n /**\n * Converts a zero-based offset to a position.\n *\n * @param offset A zero-based offset.\n * @return A valid [position](#Position).\n */\n getPositionAt(offset: number): Position;\n /**\n * Get a range covering the entire model\n */\n getFullModelRange(): Range;\n /**\n * Returns iff the model was disposed or not.\n */\n isDisposed(): boolean;\n /**\n * Search the model.\n * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.\n * @param searchOnlyEditableRange Limit the searching to only search inside the editable range of the model.\n * @param isRegex Used to indicate that `searchString` is a regular expression.\n * @param matchCase Force the matching to match lower/upper case exactly.\n * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.\n * @param captureMatches The result will contain the captured groups.\n * @param limitResultCount Limit the number of results\n * @return The ranges where the matches are. It is empty if not matches have been found.\n */\n findMatches(searchString: string, searchOnlyEditableRange: boolean, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean, limitResultCount?: number): FindMatch[];\n /**\n * Search the model.\n * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.\n * @param searchScope Limit the searching to only search inside this range.\n * @param isRegex Used to indicate that `searchString` is a regular expression.\n * @param matchCase Force the matching to match lower/upper case exactly.\n * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.\n * @param captureMatches The result will contain the captured groups.\n * @param limitResultCount Limit the number of results\n * @return The ranges where the matches are. It is empty if no matches have been found.\n */\n findMatches(searchString: string, searchScope: IRange, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean, limitResultCount?: number): FindMatch[];\n /**\n * Search the model for the next match. Loops to the beginning of the model if needed.\n * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.\n * @param searchStart Start the searching at the specified position.\n * @param isRegex Used to indicate that `searchString` is a regular expression.\n * @param matchCase Force the matching to match lower/upper case exactly.\n * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.\n * @param captureMatches The result will contain the captured groups.\n * @return The range where the next match is. It is null if no next match has been found.\n */\n findNextMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean): FindMatch;\n /**\n * Search the model for the previous match. Loops to the end of the model if needed.\n * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.\n * @param searchStart Start the searching at the specified position.\n * @param isRegex Used to indicate that `searchString` is a regular expression.\n * @param matchCase Force the matching to match lower/upper case exactly.\n * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.\n * @param captureMatches The result will contain the captured groups.\n * @return The range where the previous match is. It is null if no previous match has been found.\n */\n findPreviousMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean): FindMatch;\n }\n\n export class FindMatch {\n _findMatchBrand: void;\n readonly range: Range;\n readonly matches: string[];\n }\n\n export interface IReadOnlyModel extends ITextModel {\n /**\n * Gets the resource associated with this editor model.\n */\n readonly uri: Uri;\n /**\n * Get the language associated with this model.\n */\n getModeId(): string;\n /**\n * Get the word under or besides `position`.\n * @param position The position to look for a word.\n * @param skipSyntaxTokens Ignore syntax tokens, as identified by the mode.\n * @return The word under or besides `position`. Might be null.\n */\n getWordAtPosition(position: IPosition): IWordAtPosition;\n /**\n * Get the word under or besides `position` trimmed to `position`.column\n * @param position The position to look for a word.\n * @param skipSyntaxTokens Ignore syntax tokens, as identified by the mode.\n * @return The word under or besides `position`. Will never be null.\n */\n getWordUntilPosition(position: IPosition): IWordAtPosition;\n }\n\n /**\n * A model that is tokenized.\n */\n export interface ITokenizedModel extends ITextModel {\n /**\n * Get the language associated with this model.\n */\n getModeId(): string;\n /**\n * Get the word under or besides `position`.\n * @param position The position to look for a word.\n * @param skipSyntaxTokens Ignore syntax tokens, as identified by the mode.\n * @return The word under or besides `position`. Might be null.\n */\n getWordAtPosition(position: IPosition): IWordAtPosition;\n /**\n * Get the word under or besides `position` trimmed to `position`.column\n * @param position The position to look for a word.\n * @param skipSyntaxTokens Ignore syntax tokens, as identified by the mode.\n * @return The word under or besides `position`. Will never be null.\n */\n getWordUntilPosition(position: IPosition): IWordAtPosition;\n }\n\n /**\n * A model that can track markers.\n */\n export interface ITextModelWithMarkers extends ITextModel {\n }\n\n /**\n * Describes the behavior of decorations when typing/editing near their edges.\n * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`\n */\n export enum TrackedRangeStickiness {\n AlwaysGrowsWhenTypingAtEdges = 0,\n NeverGrowsWhenTypingAtEdges = 1,\n GrowsOnlyWhenTypingBefore = 2,\n GrowsOnlyWhenTypingAfter = 3,\n }\n\n /**\n * A model that can have decorations.\n */\n export interface ITextModelWithDecorations {\n /**\n * Perform a minimum ammount of operations, in order to transform the decorations\n * identified by `oldDecorations` to the decorations described by `newDecorations`\n * and returns the new identifiers associated with the resulting decorations.\n *\n * @param oldDecorations Array containing previous decorations identifiers.\n * @param newDecorations Array describing what decorations should result after the call.\n * @param ownerId Identifies the editor id in which these decorations should appear. If no `ownerId` is provided, the decorations will appear in all editors that attach this model.\n * @return An array containing the new decorations identifiers.\n */\n deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[], ownerId?: number): string[];\n /**\n * Get the options associated with a decoration.\n * @param id The decoration id.\n * @return The decoration options or null if the decoration was not found.\n */\n getDecorationOptions(id: string): IModelDecorationOptions;\n /**\n * Get the range associated with a decoration.\n * @param id The decoration id.\n * @return The decoration range or null if the decoration was not found.\n */\n getDecorationRange(id: string): Range;\n /**\n * Gets all the decorations for the line `lineNumber` as an array.\n * @param lineNumber The line number\n * @param ownerId If set, it will ignore decorations belonging to other owners.\n * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).\n * @return An array with the decorations\n */\n getLineDecorations(lineNumber: number, ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];\n /**\n * Gets all the decorations for the lines between `startLineNumber` and `endLineNumber` as an array.\n * @param startLineNumber The start line number\n * @param endLineNumber The end line number\n * @param ownerId If set, it will ignore decorations belonging to other owners.\n * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).\n * @return An array with the decorations\n */\n getLinesDecorations(startLineNumber: number, endLineNumber: number, ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];\n /**\n * Gets all the deocorations in a range as an array. Only `startLineNumber` and `endLineNumber` from `range` are used for filtering.\n * So for now it returns all the decorations on the same line as `range`.\n * @param range The range to search in\n * @param ownerId If set, it will ignore decorations belonging to other owners.\n * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).\n * @return An array with the decorations\n */\n getDecorationsInRange(range: IRange, ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];\n /**\n * Gets all the decorations as an array.\n * @param ownerId If set, it will ignore decorations belonging to other owners.\n * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).\n */\n getAllDecorations(ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];\n }\n\n /**\n * An editable text model.\n */\n export interface IEditableTextModel extends ITextModelWithMarkers {\n /**\n * Normalize a string containing whitespace according to indentation rules (converts to spaces or to tabs).\n */\n normalizeIndentation(str: string): string;\n /**\n * Get what is considered to be one indent (e.g. a tab character or 4 spaces, etc.).\n */\n getOneIndent(): string;\n /**\n * Change the options of this model.\n */\n updateOptions(newOpts: ITextModelUpdateOptions): void;\n /**\n * Detect the indentation options for this model from its content.\n */\n detectIndentation(defaultInsertSpaces: boolean, defaultTabSize: number): void;\n /**\n * Push a stack element onto the undo stack. This acts as an undo/redo point.\n * The idea is to use `pushEditOperations` to edit the model and then to\n * `pushStackElement` to create an undo/redo stop point.\n */\n pushStackElement(): void;\n /**\n * Push edit operations, basically editing the model. This is the preferred way\n * of editing the model. The edit operations will land on the undo stack.\n * @param beforeCursorState The cursor state before the edit operaions. This cursor state will be returned when `undo` or `redo` are invoked.\n * @param editOperations The edit operations.\n * @param cursorStateComputer A callback that can compute the resulting cursors state after the edit operations have been executed.\n * @return The cursor state returned by the `cursorStateComputer`.\n */\n pushEditOperations(beforeCursorState: Selection[], editOperations: IIdentifiedSingleEditOperation[], cursorStateComputer: ICursorStateComputer): Selection[];\n /**\n * Edit the model without adding the edits to the undo stack.\n * This can have dire consequences on the undo stack! See @pushEditOperations for the preferred way.\n * @param operations The edit operations.\n * @return The inverse edit operations, that, when applied, will bring the model back to the previous state.\n */\n applyEdits(operations: IIdentifiedSingleEditOperation[]): IIdentifiedSingleEditOperation[];\n }\n\n /**\n * A model.\n */\n export interface IModel extends IReadOnlyModel, IEditableTextModel, ITextModelWithMarkers, ITokenizedModel, ITextModelWithDecorations {\n /**\n * An event emitted when the contents of the model have changed.\n * @event\n */\n onDidChangeContent(listener: (e: IModelContentChangedEvent) => void): IDisposable;\n /**\n * An event emitted when decorations of the model have changed.\n * @event\n */\n onDidChangeDecorations(listener: (e: IModelDecorationsChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the model options have changed.\n * @event\n */\n onDidChangeOptions(listener: (e: IModelOptionsChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the language associated with the model has changed.\n * @event\n */\n onDidChangeLanguage(listener: (e: IModelLanguageChangedEvent) => void): IDisposable;\n /**\n * An event emitted right before disposing the model.\n * @event\n */\n onWillDispose(listener: () => void): IDisposable;\n /**\n * A unique identifier associated with this model.\n */\n readonly id: string;\n /**\n * Destroy this model. This will unbind the model from the mode\n * and make all necessary clean-up to release this object to the GC.\n */\n dispose(): void;\n }\n\n /**\n * A model for the diff editor.\n */\n export interface IDiffEditorModel {\n /**\n * Original model.\n */\n original: IModel;\n /**\n * Modified model.\n */\n modified: IModel;\n }\n\n /**\n * An event describing that an editor has had its model reset (i.e. `editor.setModel()`).\n */\n export interface IModelChangedEvent {\n /**\n * The `uri` of the previous model or null.\n */\n readonly oldModelUrl: Uri;\n /**\n * The `uri` of the new model or null.\n */\n readonly newModelUrl: Uri;\n }\n\n export interface IDimension {\n width: number;\n height: number;\n }\n\n /**\n * A change\n */\n export interface IChange {\n readonly originalStartLineNumber: number;\n readonly originalEndLineNumber: number;\n readonly modifiedStartLineNumber: number;\n readonly modifiedEndLineNumber: number;\n }\n\n /**\n * A character level change.\n */\n export interface ICharChange extends IChange {\n readonly originalStartColumn: number;\n readonly originalEndColumn: number;\n readonly modifiedStartColumn: number;\n readonly modifiedEndColumn: number;\n }\n\n /**\n * A line change\n */\n export interface ILineChange extends IChange {\n readonly charChanges: ICharChange[];\n }\n\n /**\n * Information about a line in the diff editor\n */\n export interface IDiffLineInformation {\n readonly equivalentLineNumber: number;\n }\n\n export interface INewScrollPosition {\n scrollLeft?: number;\n scrollTop?: number;\n }\n\n /**\n * Description of an action contribution\n */\n export interface IActionDescriptor {\n /**\n * An unique identifier of the contributed action.\n */\n id: string;\n /**\n * A label of the action that will be presented to the user.\n */\n label: string;\n /**\n * Precondition rule.\n */\n precondition?: string;\n /**\n * An array of keybindings for the action.\n */\n keybindings?: number[];\n /**\n * The keybinding rule (condition on top of precondition).\n */\n keybindingContext?: string;\n /**\n * Control if the action should show up in the context menu and where.\n * The context menu of the editor has these default:\n * navigation - The navigation group comes first in all cases.\n * 1_modification - This group comes next and contains commands that modify your code.\n * 9_cutcopypaste - The last default group with the basic editing commands.\n * You can also create your own group.\n * Defaults to null (don't show in context menu).\n */\n contextMenuGroupId?: string;\n /**\n * Control the order in the context menu group.\n */\n contextMenuOrder?: number;\n /**\n * Method that will be executed when the action is triggered.\n * @param editor The editor instance is passed in as a convinience\n */\n run(editor: ICommonCodeEditor): void | Promise;\n }\n\n export interface IEditorAction {\n readonly id: string;\n readonly label: string;\n readonly alias: string;\n isSupported(): boolean;\n run(): Promise;\n }\n\n export type IEditorModel = IModel | IDiffEditorModel;\n\n /**\n * A (serializable) state of the cursors.\n */\n export interface ICursorState {\n inSelectionMode: boolean;\n selectionStart: IPosition;\n position: IPosition;\n }\n\n /**\n * A (serializable) state of the view.\n */\n export interface IViewState {\n scrollTop: number;\n scrollTopWithoutViewZones: number;\n scrollLeft: number;\n }\n\n /**\n * A (serializable) state of the code editor.\n */\n export interface ICodeEditorViewState {\n cursorState: ICursorState[];\n viewState: IViewState;\n contributionsState: {\n [id: string]: any;\n };\n }\n\n /**\n * (Serializable) View state for the diff editor.\n */\n export interface IDiffEditorViewState {\n original: ICodeEditorViewState;\n modified: ICodeEditorViewState;\n }\n\n /**\n * An editor view state.\n */\n export type IEditorViewState = ICodeEditorViewState | IDiffEditorViewState;\n\n /**\n * An editor.\n */\n export interface IEditor {\n /**\n * An event emitted when the editor has been disposed.\n * @event\n */\n onDidDispose(listener: () => void): IDisposable;\n /**\n * Dispose the editor.\n */\n dispose(): void;\n /**\n * Get a unique id for this editor instance.\n */\n getId(): string;\n /**\n * Get the editor type. Please see `EditorType`.\n * This is to avoid an instanceof check\n */\n getEditorType(): string;\n /**\n * Update the editor's options after the editor has been created.\n */\n updateOptions(newOptions: IEditorOptions): void;\n /**\n * Instructs the editor to remeasure its container. This method should\n * be called when the container of the editor gets resized.\n */\n layout(dimension?: IDimension): void;\n /**\n * Brings browser focus to the editor text\n */\n focus(): void;\n /**\n * Returns true if this editor has keyboard focus (e.g. cursor is blinking).\n */\n isFocused(): boolean;\n /**\n * Returns all actions associated with this editor.\n */\n getActions(): IEditorAction[];\n /**\n * Returns all actions associated with this editor.\n */\n getSupportedActions(): IEditorAction[];\n /**\n * Saves current view state of the editor in a serializable object.\n */\n saveViewState(): IEditorViewState;\n /**\n * Restores the view state of the editor from a serializable object generated by `saveViewState`.\n */\n restoreViewState(state: IEditorViewState): void;\n /**\n * Given a position, returns a column number that takes tab-widths into account.\n */\n getVisibleColumnFromPosition(position: IPosition): number;\n /**\n * Returns the primary position of the cursor.\n */\n getPosition(): Position;\n /**\n * Set the primary position of the cursor. This will remove any secondary cursors.\n * @param position New primary cursor's position\n */\n setPosition(position: IPosition): void;\n /**\n * Scroll vertically as necessary and reveal a line.\n */\n revealLine(lineNumber: number): void;\n /**\n * Scroll vertically as necessary and reveal a line centered vertically.\n */\n revealLineInCenter(lineNumber: number): void;\n /**\n * Scroll vertically as necessary and reveal a line centered vertically only if it lies outside the viewport.\n */\n revealLineInCenterIfOutsideViewport(lineNumber: number): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a position.\n */\n revealPosition(position: IPosition, revealVerticalInCenter?: boolean, revealHorizontal?: boolean): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a position centered vertically.\n */\n revealPositionInCenter(position: IPosition): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a position centered vertically only if it lies outside the viewport.\n */\n revealPositionInCenterIfOutsideViewport(position: IPosition): void;\n /**\n * Returns the primary selection of the editor.\n */\n getSelection(): Selection;\n /**\n * Returns all the selections of the editor.\n */\n getSelections(): Selection[];\n /**\n * Set the primary selection of the editor. This will remove any secondary cursors.\n * @param selection The new selection\n */\n setSelection(selection: IRange): void;\n /**\n * Set the primary selection of the editor. This will remove any secondary cursors.\n * @param selection The new selection\n */\n setSelection(selection: Range): void;\n /**\n * Set the primary selection of the editor. This will remove any secondary cursors.\n * @param selection The new selection\n */\n setSelection(selection: ISelection): void;\n /**\n * Set the primary selection of the editor. This will remove any secondary cursors.\n * @param selection The new selection\n */\n setSelection(selection: Selection): void;\n /**\n * Set the selections for all the cursors of the editor.\n * Cursors will be removed or added, as necessary.\n */\n setSelections(selections: ISelection[]): void;\n /**\n * Scroll vertically as necessary and reveal lines.\n */\n revealLines(startLineNumber: number, endLineNumber: number): void;\n /**\n * Scroll vertically as necessary and reveal lines centered vertically.\n */\n revealLinesInCenter(lineNumber: number, endLineNumber: number): void;\n /**\n * Scroll vertically as necessary and reveal lines centered vertically only if it lies outside the viewport.\n */\n revealLinesInCenterIfOutsideViewport(lineNumber: number, endLineNumber: number): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a range.\n */\n revealRange(range: IRange): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a range centered vertically.\n */\n revealRangeInCenter(range: IRange): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a range at the top of the viewport.\n */\n revealRangeAtTop(range: IRange): void;\n /**\n * Scroll vertically or horizontally as necessary and reveal a range centered vertically only if it lies outside the viewport.\n */\n revealRangeInCenterIfOutsideViewport(range: IRange): void;\n /**\n * Directly trigger a handler or an editor action.\n * @param source The source of the call.\n * @param handlerId The id of the handler or the id of a contribution.\n * @param payload Extra data to be sent to the handler.\n */\n trigger(source: string, handlerId: string, payload: any): void;\n /**\n * Gets the current model attached to this editor.\n */\n getModel(): IEditorModel;\n /**\n * Sets the current model attached to this editor.\n * If the previous model was created by the editor via the value key in the options\n * literal object, it will be destroyed. Otherwise, if the previous model was set\n * via setModel, or the model key in the options literal object, the previous model\n * will not be destroyed.\n * It is safe to call setModel(null) to simply detach the current model from the editor.\n */\n setModel(model: IEditorModel): void;\n }\n\n /**\n * An editor contribution that gets created every time a new editor gets created and gets disposed when the editor gets disposed.\n */\n export interface IEditorContribution {\n /**\n * Get a unique identifier for this contribution.\n */\n getId(): string;\n /**\n * Dispose this contribution.\n */\n dispose(): void;\n /**\n * Store view state.\n */\n saveViewState?(): any;\n /**\n * Restore view state.\n */\n restoreViewState?(state: any): void;\n }\n\n export interface ICommonCodeEditor extends IEditor {\n /**\n * An event emitted when the content of the current model has changed.\n * @event\n */\n onDidChangeModelContent(listener: (e: IModelContentChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the language of the current model has changed.\n * @event\n */\n onDidChangeModelLanguage(listener: (e: IModelLanguageChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the options of the current model has changed.\n * @event\n */\n onDidChangeModelOptions(listener: (e: IModelOptionsChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the configuration of the editor has changed. (e.g. `editor.updateOptions()`)\n * @event\n */\n onDidChangeConfiguration(listener: (e: IConfigurationChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the cursor position has changed.\n * @event\n */\n onDidChangeCursorPosition(listener: (e: ICursorPositionChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the cursor selection has changed.\n * @event\n */\n onDidChangeCursorSelection(listener: (e: ICursorSelectionChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the model of this editor has changed (e.g. `editor.setModel()`).\n * @event\n */\n onDidChangeModel(listener: (e: IModelChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the decorations of the current model have changed.\n * @event\n */\n onDidChangeModelDecorations(listener: (e: IModelDecorationsChangedEvent) => void): IDisposable;\n /**\n * An event emitted when the text inside this editor gained focus (i.e. cursor blinking).\n * @event\n */\n onDidFocusEditorText(listener: () => void): IDisposable;\n /**\n * An event emitted when the text inside this editor lost focus.\n * @event\n */\n onDidBlurEditorText(listener: () => void): IDisposable;\n /**\n * An event emitted when the text inside this editor or an editor widget gained focus.\n * @event\n */\n onDidFocusEditor(listener: () => void): IDisposable;\n /**\n * An event emitted when the text inside this editor or an editor widget lost focus.\n * @event\n */\n onDidBlurEditor(listener: () => void): IDisposable;\n /**\n * Saves current view state of the editor in a serializable object.\n */\n saveViewState(): ICodeEditorViewState;\n /**\n * Restores the view state of the editor from a serializable object generated by `saveViewState`.\n */\n restoreViewState(state: ICodeEditorViewState): void;\n /**\n * Returns true if this editor or one of its widgets has keyboard focus.\n */\n hasWidgetFocus(): boolean;\n /**\n * Get a contribution of this editor.\n * @id Unique identifier of the contribution.\n * @return The contribution or null if contribution not found.\n */\n getContribution(id: string): T;\n /**\n * Type the getModel() of IEditor.\n */\n getModel(): IModel;\n /**\n * Returns the current editor's configuration\n */\n getConfiguration(): InternalEditorOptions;\n /**\n * Get value of the current model attached to this editor.\n * @see IModel.getValue\n */\n getValue(options?: {\n preserveBOM: boolean;\n lineEnding: string;\n }): string;\n /**\n * Set the value of the current model attached to this editor.\n * @see IModel.setValue\n */\n setValue(newValue: string): void;\n /**\n * Get the scrollWidth of the editor's viewport.\n */\n getScrollWidth(): number;\n /**\n * Get the scrollLeft of the editor's viewport.\n */\n getScrollLeft(): number;\n /**\n * Get the scrollHeight of the editor's viewport.\n */\n getScrollHeight(): number;\n /**\n * Get the scrollTop of the editor's viewport.\n */\n getScrollTop(): number;\n /**\n * Change the scrollLeft of the editor's viewport.\n */\n setScrollLeft(newScrollLeft: number): void;\n /**\n * Change the scrollTop of the editor's viewport.\n */\n setScrollTop(newScrollTop: number): void;\n /**\n * Change the scroll position of the editor's viewport.\n */\n setScrollPosition(position: INewScrollPosition): void;\n /**\n * Get an action that is a contribution to this editor.\n * @id Unique identifier of the contribution.\n * @return The action or null if action not found.\n */\n getAction(id: string): IEditorAction;\n /**\n * Execute a command on the editor.\n * The edits will land on the undo-redo stack, but no \"undo stop\" will be pushed.\n * @param source The source of the call.\n * @param command The command to execute\n */\n executeCommand(source: string, command: ICommand): void;\n /**\n * Push an \"undo stop\" in the undo-redo stack.\n */\n pushUndoStop(): boolean;\n /**\n * Execute edits on the editor.\n * The edits will land on the undo-redo stack, but no \"undo stop\" will be pushed.\n * @param source The source of the call.\n * @param edits The edits to execute.\n * @param endCursoState Cursor state after the edits were applied.\n */\n executeEdits(source: string, edits: IIdentifiedSingleEditOperation[], endCursoState?: Selection[]): boolean;\n /**\n * Execute multiple (concommitent) commands on the editor.\n * @param source The source of the call.\n * @param command The commands to execute\n */\n executeCommands(source: string, commands: ICommand[]): void;\n /**\n * Get all the decorations on a line (filtering out decorations from other editors).\n */\n getLineDecorations(lineNumber: number): IModelDecoration[];\n /**\n * All decorations added through this call will get the ownerId of this editor.\n * @see IModel.deltaDecorations\n */\n deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[];\n /**\n * Get the layout info for the editor.\n */\n getLayoutInfo(): EditorLayoutInfo;\n }\n\n export interface ICommonDiffEditor extends IEditor {\n /**\n * An event emitted when the diff information computed by this diff editor has been updated.\n * @event\n */\n onDidUpdateDiff(listener: () => void): IDisposable;\n /**\n * Saves current view state of the editor in a serializable object.\n */\n saveViewState(): IDiffEditorViewState;\n /**\n * Restores the view state of the editor from a serializable object generated by `saveViewState`.\n */\n restoreViewState(state: IDiffEditorViewState): void;\n /**\n * Type the getModel() of IEditor.\n */\n getModel(): IDiffEditorModel;\n /**\n * Get the `original` editor.\n */\n getOriginalEditor(): ICommonCodeEditor;\n /**\n * Get the `modified` editor.\n */\n getModifiedEditor(): ICommonCodeEditor;\n /**\n * Get the computed diff information.\n */\n getLineChanges(): ILineChange[];\n /**\n * Get information based on computed diff about a line number from the original model.\n * If the diff computation is not finished or the model is missing, will return null.\n */\n getDiffLineInformationForOriginal(lineNumber: number): IDiffLineInformation;\n /**\n * Get information based on computed diff about a line number from the modified model.\n * If the diff computation is not finished or the model is missing, will return null.\n */\n getDiffLineInformationForModified(lineNumber: number): IDiffLineInformation;\n /**\n * @see ICodeEditor.getValue\n */\n getValue(options?: {\n preserveBOM: boolean;\n lineEnding: string;\n }): string;\n }\n\n /**\n * The type of the `IEditor`.\n */\n export var EditorType: {\n ICodeEditor: string;\n IDiffEditor: string;\n };\n\n /**\n * An event describing that the current mode associated with a model has changed.\n */\n export interface IModelLanguageChangedEvent {\n /**\n * Previous language\n */\n readonly oldLanguage: string;\n /**\n * New language\n */\n readonly newLanguage: string;\n }\n\n export interface IModelContentChange {\n /**\n * The range that got replaced.\n */\n readonly range: IRange;\n /**\n * The length of the range that got replaced.\n */\n readonly rangeLength: number;\n /**\n * The new text for the range.\n */\n readonly text: string;\n }\n\n /**\n * An event describing a change in the text of a model.\n */\n export interface IModelContentChangedEvent {\n readonly changes: IModelContentChange[];\n /**\n * The (new) end-of-line character.\n */\n readonly eol: string;\n /**\n * The new version id the model has transitioned to.\n */\n readonly versionId: number;\n /**\n * Flag that indicates that this event was generated while undoing.\n */\n readonly isUndoing: boolean;\n /**\n * Flag that indicates that this event was generated while redoing.\n */\n readonly isRedoing: boolean;\n /**\n * Flag that indicates that all decorations were lost with this edit.\n * The model has been reset to a new value.\n */\n readonly isFlush: boolean;\n }\n\n /**\n * An event describing that model decorations have changed.\n */\n export interface IModelDecorationsChangedEvent {\n /**\n * Lists of ids for added decorations.\n */\n readonly addedDecorations: string[];\n /**\n * Lists of ids for changed decorations.\n */\n readonly changedDecorations: string[];\n /**\n * List of ids for removed decorations.\n */\n readonly removedDecorations: string[];\n }\n\n /**\n * An event describing that some ranges of lines have been tokenized (their tokens have changed).\n */\n export interface IModelTokensChangedEvent {\n readonly ranges: {\n /**\n * The start of the range (inclusive)\n */\n readonly fromLineNumber: number;\n /**\n * The end of the range (inclusive)\n */\n readonly toLineNumber: number;\n }[];\n }\n\n export interface IModelOptionsChangedEvent {\n readonly tabSize: boolean;\n readonly insertSpaces: boolean;\n readonly trimAutoWhitespace: boolean;\n }\n\n /**\n * Describes the reason the cursor has changed its position.\n */\n export enum CursorChangeReason {\n /**\n * Unknown or not set.\n */\n NotSet = 0,\n /**\n * A `model.setValue()` was called.\n */\n ContentFlush = 1,\n /**\n * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers.\n */\n RecoverFromMarkers = 2,\n /**\n * There was an explicit user gesture.\n */\n Explicit = 3,\n /**\n * There was a Paste.\n */\n Paste = 4,\n /**\n * There was an Undo.\n */\n Undo = 5,\n /**\n * There was a Redo.\n */\n Redo = 6,\n }\n\n /**\n * An event describing that the cursor position has changed.\n */\n export interface ICursorPositionChangedEvent {\n /**\n * Primary cursor's position.\n */\n readonly position: Position;\n /**\n * Secondary cursors' position.\n */\n readonly secondaryPositions: Position[];\n /**\n * Reason.\n */\n readonly reason: CursorChangeReason;\n /**\n * Source of the call that caused the event.\n */\n readonly source: string;\n }\n\n /**\n * An event describing that the cursor selection has changed.\n */\n export interface ICursorSelectionChangedEvent {\n /**\n * The primary selection.\n */\n readonly selection: Selection;\n /**\n * The secondary selections.\n */\n readonly secondarySelections: Selection[];\n /**\n * Source of the call that caused the event.\n */\n readonly source: string;\n /**\n * Reason.\n */\n readonly reason: CursorChangeReason;\n }\n\n /**\n * Configuration options for editor scrollbars\n */\n export interface IEditorScrollbarOptions {\n /**\n * The size of arrows (if displayed).\n * Defaults to 11.\n */\n arrowSize?: number;\n /**\n * Render vertical scrollbar.\n * Accepted values: 'auto', 'visible', 'hidden'.\n * Defaults to 'auto'.\n */\n vertical?: string;\n /**\n * Render horizontal scrollbar.\n * Accepted values: 'auto', 'visible', 'hidden'.\n * Defaults to 'auto'.\n */\n horizontal?: string;\n /**\n * Cast horizontal and vertical shadows when the content is scrolled.\n * Defaults to true.\n */\n useShadows?: boolean;\n /**\n * Render arrows at the top and bottom of the vertical scrollbar.\n * Defaults to false.\n */\n verticalHasArrows?: boolean;\n /**\n * Render arrows at the left and right of the horizontal scrollbar.\n * Defaults to false.\n */\n horizontalHasArrows?: boolean;\n /**\n * Listen to mouse wheel events and react to them by scrolling.\n * Defaults to true.\n */\n handleMouseWheel?: boolean;\n /**\n * Height in pixels for the horizontal scrollbar.\n * Defaults to 10 (px).\n */\n horizontalScrollbarSize?: number;\n /**\n * Width in pixels for the vertical scrollbar.\n * Defaults to 10 (px).\n */\n verticalScrollbarSize?: number;\n /**\n * Width in pixels for the vertical slider.\n * Defaults to `verticalScrollbarSize`.\n */\n verticalSliderSize?: number;\n /**\n * Height in pixels for the horizontal slider.\n * Defaults to `horizontalScrollbarSize`.\n */\n horizontalSliderSize?: number;\n }\n\n /**\n * Configuration options for editor find widget\n */\n export interface IEditorFindOptions {\n /**\n * Controls if we seed search string in the Find Widget with editor selection.\n */\n seedSearchStringFromSelection?: boolean;\n /**\n * Controls if Find in Selection flag is turned on when multiple lines of text are selected in the editor.\n */\n autoFindInSelection: boolean;\n }\n\n /**\n * Configuration options for editor minimap\n */\n export interface IEditorMinimapOptions {\n /**\n * Enable the rendering of the minimap.\n * Defaults to false.\n */\n enabled?: boolean;\n /**\n * Control the rendering of the minimap slider.\n * Defaults to 'mouseover'.\n */\n showSlider?: 'always' | 'mouseover';\n /**\n * Render the actual text on a line (as opposed to color blocks).\n * Defaults to true.\n */\n renderCharacters?: boolean;\n /**\n * Limit the width of the minimap to render at most a certain number of columns.\n * Defaults to 120.\n */\n maxColumn?: number;\n }\n\n /**\n * Configuration options for the editor.\n */\n export interface IEditorOptions {\n /**\n * The aria label for the editor's textarea (when it is focused).\n */\n ariaLabel?: string;\n /**\n * Render vertical lines at the specified columns.\n * Defaults to empty array.\n */\n rulers?: number[];\n /**\n * A string containing the word separators used when doing word navigation.\n * Defaults to `~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?\n */\n wordSeparators?: string;\n /**\n * Enable Linux primary clipboard.\n * Defaults to true.\n */\n selectionClipboard?: boolean;\n /**\n * Control the rendering of line numbers.\n * If it is a function, it will be invoked when rendering a line number and the return value will be rendered.\n * Otherwise, if it is a truey, line numbers will be rendered normally (equivalent of using an identity function).\n * Otherwise, line numbers will not be rendered.\n * Defaults to true.\n */\n lineNumbers?: 'on' | 'off' | 'relative' | ((lineNumber: number) => string);\n /**\n * Should the corresponding line be selected when clicking on the line number?\n * Defaults to true.\n */\n selectOnLineNumbers?: boolean;\n /**\n * Control the width of line numbers, by reserving horizontal space for rendering at least an amount of digits.\n * Defaults to 5.\n */\n lineNumbersMinChars?: number;\n /**\n * Enable the rendering of the glyph margin.\n * Defaults to true in vscode and to false in monaco-editor.\n */\n glyphMargin?: boolean;\n /**\n * The width reserved for line decorations (in px).\n * Line decorations are placed between line numbers and the editor content.\n * You can pass in a string in the format floating point followed by \"ch\". e.g. 1.3ch.\n * Defaults to 10.\n */\n lineDecorationsWidth?: number | string;\n /**\n * When revealing the cursor, a virtual padding (px) is added to the cursor, turning it into a rectangle.\n * This virtual padding ensures that the cursor gets revealed before hitting the edge of the viewport.\n * Defaults to 30 (px).\n */\n revealHorizontalRightPadding?: number;\n /**\n * Render the editor selection with rounded borders.\n * Defaults to true.\n */\n roundedSelection?: boolean;\n /**\n * Class name to be added to the editor.\n */\n extraEditorClassName?: string;\n /**\n * Should the editor be read only.\n * Defaults to false.\n */\n readOnly?: boolean;\n /**\n * Control the behavior and rendering of the scrollbars.\n */\n scrollbar?: IEditorScrollbarOptions;\n /**\n * Control the behavior and rendering of the minimap.\n */\n minimap?: IEditorMinimapOptions;\n /**\n * Control the behavior of the find widget.\n */\n find?: IEditorFindOptions;\n /**\n * Display overflow widgets as `fixed`.\n * Defaults to `false`.\n */\n fixedOverflowWidgets?: boolean;\n /**\n * The number of vertical lanes the overview ruler should render.\n * Defaults to 2.\n */\n overviewRulerLanes?: number;\n /**\n * Controls if a border should be drawn around the overview ruler.\n * Defaults to `true`.\n */\n overviewRulerBorder?: boolean;\n /**\n * Control the cursor animation style, possible values are 'blink', 'smooth', 'phase', 'expand' and 'solid'.\n * Defaults to 'blink'.\n */\n cursorBlinking?: string;\n /**\n * Zoom the font in the editor when using the mouse wheel in combination with holding Ctrl.\n * Defaults to false.\n */\n mouseWheelZoom?: boolean;\n /**\n * Control the cursor style, either 'block' or 'line'.\n * Defaults to 'line'.\n */\n cursorStyle?: string;\n /**\n * Enable font ligatures.\n * Defaults to false.\n */\n fontLigatures?: boolean;\n /**\n * Disable the use of `will-change` for the editor margin and lines layers.\n * The usage of `will-change` acts as a hint for browsers to create an extra layer.\n * Defaults to false.\n */\n disableLayerHinting?: boolean;\n /**\n * Disable the optimizations for monospace fonts.\n * Defaults to false.\n */\n disableMonospaceOptimizations?: boolean;\n /**\n * Should the cursor be hidden in the overview ruler.\n * Defaults to false.\n */\n hideCursorInOverviewRuler?: boolean;\n /**\n * Enable that scrolling can go one screen size after the last line.\n * Defaults to true.\n */\n scrollBeyondLastLine?: boolean;\n /**\n * Enable that the editor will install an interval to check if its container dom node size has changed.\n * Enabling this might have a severe performance impact.\n * Defaults to false.\n */\n automaticLayout?: boolean;\n /**\n * Control the wrapping of the editor.\n * When `wordWrap` = \"off\", the lines will never wrap.\n * When `wordWrap` = \"on\", the lines will wrap at the viewport width.\n * When `wordWrap` = \"wordWrapColumn\", the lines will wrap at `wordWrapColumn`.\n * When `wordWrap` = \"bounded\", the lines will wrap at min(viewport width, wordWrapColumn).\n * Defaults to \"off\".\n */\n wordWrap?: 'off' | 'on' | 'wordWrapColumn' | 'bounded';\n /**\n * Control the wrapping of the editor.\n * When `wordWrap` = \"off\", the lines will never wrap.\n * When `wordWrap` = \"on\", the lines will wrap at the viewport width.\n * When `wordWrap` = \"wordWrapColumn\", the lines will wrap at `wordWrapColumn`.\n * When `wordWrap` = \"bounded\", the lines will wrap at min(viewport width, wordWrapColumn).\n * Defaults to 80.\n */\n wordWrapColumn?: number;\n /**\n * Force word wrapping when the text appears to be of a minified/generated file.\n * Defaults to true.\n */\n wordWrapMinified?: boolean;\n /**\n * Control indentation of wrapped lines. Can be: 'none', 'same' or 'indent'.\n * Defaults to 'same' in vscode and to 'none' in monaco-editor.\n */\n wrappingIndent?: string;\n /**\n * Configure word wrapping characters. A break will be introduced before these characters.\n * Defaults to '{([+'.\n */\n wordWrapBreakBeforeCharacters?: string;\n /**\n * Configure word wrapping characters. A break will be introduced after these characters.\n * Defaults to ' \\t})]?|&,;'.\n */\n wordWrapBreakAfterCharacters?: string;\n /**\n * Configure word wrapping characters. A break will be introduced after these characters only if no `wordWrapBreakBeforeCharacters` or `wordWrapBreakAfterCharacters` were found.\n * Defaults to '.'.\n */\n wordWrapBreakObtrusiveCharacters?: string;\n /**\n * Performance guard: Stop rendering a line after x characters.\n * Defaults to 10000.\n * Use -1 to never stop rendering\n */\n stopRenderingLineAfter?: number;\n /**\n * Enable hover.\n * Defaults to true.\n */\n hover?: boolean;\n /**\n * Enable detecting links and making them clickable.\n * Defaults to true.\n */\n links?: boolean;\n /**\n * Enable custom contextmenu.\n * Defaults to true.\n */\n contextmenu?: boolean;\n /**\n * A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.\n * Defaults to 1.\n */\n mouseWheelScrollSensitivity?: number;\n /**\n * The modifier to be used to add multiple cursors with the mouse.\n * Defaults to 'alt'\n */\n multiCursorModifier?: 'ctrlCmd' | 'alt';\n /**\n * Configure the editor's accessibility support.\n * Defaults to 'auto'. It is best to leave this to 'auto'.\n */\n accessibilitySupport?: 'auto' | 'off' | 'on';\n /**\n * Enable quick suggestions (shadow suggestions)\n * Defaults to true.\n */\n quickSuggestions?: boolean | {\n other: boolean;\n comments: boolean;\n strings: boolean;\n };\n /**\n * Quick suggestions show delay (in ms)\n * Defaults to 500 (ms)\n */\n quickSuggestionsDelay?: number;\n /**\n * Enables parameter hints\n */\n parameterHints?: boolean;\n /**\n * Render icons in suggestions box.\n * Defaults to true.\n */\n iconsInSuggestions?: boolean;\n /**\n * Enable auto closing brackets.\n * Defaults to true.\n */\n autoClosingBrackets?: boolean;\n /**\n * Enable auto indentation adjustment.\n * Defaults to false.\n */\n autoIndent?: boolean;\n /**\n * Enable format on type.\n * Defaults to false.\n */\n formatOnType?: boolean;\n /**\n * Enable format on paste.\n * Defaults to false.\n */\n formatOnPaste?: boolean;\n /**\n * Controls if the editor should allow to move selections via drag and drop.\n * Defaults to false.\n */\n dragAndDrop?: boolean;\n /**\n * Enable the suggestion box to pop-up on trigger characters.\n * Defaults to true.\n */\n suggestOnTriggerCharacters?: boolean;\n /**\n * Accept suggestions on ENTER.\n * Defaults to 'on'.\n */\n acceptSuggestionOnEnter?: 'on' | 'smart' | 'off';\n /**\n * Accept suggestions on provider defined characters.\n * Defaults to true.\n */\n acceptSuggestionOnCommitCharacter?: boolean;\n /**\n * Enable snippet suggestions. Default to 'true'.\n */\n snippetSuggestions?: 'top' | 'bottom' | 'inline' | 'none';\n /**\n * Copying without a selection copies the current line.\n */\n emptySelectionClipboard?: boolean;\n /**\n * Enable word based suggestions. Defaults to 'true'\n */\n wordBasedSuggestions?: boolean;\n /**\n * The font size for the suggest widget.\n * Defaults to the editor font size.\n */\n suggestFontSize?: number;\n /**\n * The line height for the suggest widget.\n * Defaults to the editor line height.\n */\n suggestLineHeight?: number;\n /**\n * Enable selection highlight.\n * Defaults to true.\n */\n selectionHighlight?: boolean;\n /**\n * Enable semantic occurrences highlight.\n * Defaults to true.\n */\n occurrencesHighlight?: boolean;\n /**\n * Show code lens\n * Defaults to true.\n */\n codeLens?: boolean;\n /**\n * Enable code folding\n * Defaults to true in vscode and to false in monaco-editor.\n */\n folding?: boolean;\n /**\n * Controls whether the fold actions in the gutter stay always visible or hide unless the mouse is over the gutter.\n * Defaults to 'mouseover'.\n */\n showFoldingControls?: 'always' | 'mouseover';\n /**\n * Enable highlighting of matching brackets.\n * Defaults to true.\n */\n matchBrackets?: boolean;\n /**\n * Enable rendering of whitespace.\n * Defaults to none.\n */\n renderWhitespace?: 'none' | 'boundary' | 'all';\n /**\n * Enable rendering of control characters.\n * Defaults to false.\n */\n renderControlCharacters?: boolean;\n /**\n * Enable rendering of indent guides.\n * Defaults to false.\n */\n renderIndentGuides?: boolean;\n /**\n * Enable rendering of current line highlight.\n * Defaults to all.\n */\n renderLineHighlight?: 'none' | 'gutter' | 'line' | 'all';\n /**\n * Inserting and deleting whitespace follows tab stops.\n */\n useTabStops?: boolean;\n /**\n * The font family\n */\n fontFamily?: string;\n /**\n * The font weight\n */\n fontWeight?: 'normal' | 'bold' | 'bolder' | 'lighter' | 'initial' | 'inherit' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\n /**\n * The font size\n */\n fontSize?: number;\n /**\n * The line height\n */\n lineHeight?: number;\n /**\n * The letter spacing\n */\n letterSpacing?: number;\n }\n\n /**\n * Configuration options for the diff editor.\n */\n export interface IDiffEditorOptions extends IEditorOptions {\n /**\n * Allow the user to resize the diff editor split view.\n * Defaults to true.\n */\n enableSplitViewResizing?: boolean;\n /**\n * Render the differences in two side-by-side editors.\n * Defaults to true.\n */\n renderSideBySide?: boolean;\n /**\n * Compute the diff by ignoring leading/trailing whitespace\n * Defaults to true.\n */\n ignoreTrimWhitespace?: boolean;\n /**\n * Render +/- indicators for added/deleted changes.\n * Defaults to true.\n */\n renderIndicators?: boolean;\n /**\n * Original model should be editable?\n * Defaults to false.\n */\n originalEditable?: boolean;\n }\n\n export enum RenderMinimap {\n None = 0,\n Small = 1,\n Large = 2,\n SmallBlocks = 3,\n LargeBlocks = 4,\n }\n\n /**\n * Describes how to indent wrapped lines.\n */\n export enum WrappingIndent {\n /**\n * No indentation => wrapped lines begin at column 1.\n */\n None = 0,\n /**\n * Same => wrapped lines get the same indentation as the parent.\n */\n Same = 1,\n /**\n * Indent => wrapped lines get +1 indentation as the parent.\n */\n Indent = 2,\n }\n\n /**\n * The kind of animation in which the editor's cursor should be rendered.\n */\n export enum TextEditorCursorBlinkingStyle {\n /**\n * Hidden\n */\n Hidden = 0,\n /**\n * Blinking\n */\n Blink = 1,\n /**\n * Blinking with smooth fading\n */\n Smooth = 2,\n /**\n * Blinking with prolonged filled state and smooth fading\n */\n Phase = 3,\n /**\n * Expand collapse animation on the y axis\n */\n Expand = 4,\n /**\n * No-Blinking\n */\n Solid = 5,\n }\n\n /**\n * The style in which the editor's cursor should be rendered.\n */\n export enum TextEditorCursorStyle {\n /**\n * As a vertical line (sitting between two characters).\n */\n Line = 1,\n /**\n * As a block (sitting on top of a character).\n */\n Block = 2,\n /**\n * As a horizontal line (sitting under a character).\n */\n Underline = 3,\n /**\n * As a thin vertical line (sitting between two characters).\n */\n LineThin = 4,\n /**\n * As an outlined block (sitting on top of a character).\n */\n BlockOutline = 5,\n /**\n * As a thin horizontal line (sitting under a character).\n */\n UnderlineThin = 6,\n }\n\n export interface InternalEditorScrollbarOptions {\n readonly arrowSize: number;\n readonly vertical: ScrollbarVisibility;\n readonly horizontal: ScrollbarVisibility;\n readonly useShadows: boolean;\n readonly verticalHasArrows: boolean;\n readonly horizontalHasArrows: boolean;\n readonly handleMouseWheel: boolean;\n readonly horizontalScrollbarSize: number;\n readonly horizontalSliderSize: number;\n readonly verticalScrollbarSize: number;\n readonly verticalSliderSize: number;\n readonly mouseWheelScrollSensitivity: number;\n }\n\n export interface InternalEditorMinimapOptions {\n readonly enabled: boolean;\n readonly showSlider: 'always' | 'mouseover';\n readonly renderCharacters: boolean;\n readonly maxColumn: number;\n }\n\n export interface InternalEditorFindOptions {\n readonly seedSearchStringFromSelection: boolean;\n readonly autoFindInSelection: boolean;\n }\n\n export interface EditorWrappingInfo {\n readonly inDiffEditor: boolean;\n readonly isDominatedByLongLines: boolean;\n readonly isWordWrapMinified: boolean;\n readonly isViewportWrapping: boolean;\n readonly wrappingColumn: number;\n readonly wrappingIndent: WrappingIndent;\n readonly wordWrapBreakBeforeCharacters: string;\n readonly wordWrapBreakAfterCharacters: string;\n readonly wordWrapBreakObtrusiveCharacters: string;\n }\n\n export interface InternalEditorViewOptions {\n readonly extraEditorClassName: string;\n readonly disableMonospaceOptimizations: boolean;\n readonly rulers: number[];\n readonly ariaLabel: string;\n readonly renderLineNumbers: boolean;\n readonly renderCustomLineNumbers: (lineNumber: number) => string;\n readonly renderRelativeLineNumbers: boolean;\n readonly selectOnLineNumbers: boolean;\n readonly glyphMargin: boolean;\n readonly revealHorizontalRightPadding: number;\n readonly roundedSelection: boolean;\n readonly overviewRulerLanes: number;\n readonly overviewRulerBorder: boolean;\n readonly cursorBlinking: TextEditorCursorBlinkingStyle;\n readonly mouseWheelZoom: boolean;\n readonly cursorStyle: TextEditorCursorStyle;\n readonly hideCursorInOverviewRuler: boolean;\n readonly scrollBeyondLastLine: boolean;\n readonly stopRenderingLineAfter: number;\n readonly renderWhitespace: 'none' | 'boundary' | 'all';\n readonly renderControlCharacters: boolean;\n readonly fontLigatures: boolean;\n readonly renderIndentGuides: boolean;\n readonly renderLineHighlight: 'none' | 'gutter' | 'line' | 'all';\n readonly scrollbar: InternalEditorScrollbarOptions;\n readonly minimap: InternalEditorMinimapOptions;\n readonly fixedOverflowWidgets: boolean;\n }\n\n export interface EditorContribOptions {\n readonly selectionClipboard: boolean;\n readonly hover: boolean;\n readonly links: boolean;\n readonly contextmenu: boolean;\n readonly quickSuggestions: boolean | {\n other: boolean;\n comments: boolean;\n strings: boolean;\n };\n readonly quickSuggestionsDelay: number;\n readonly parameterHints: boolean;\n readonly iconsInSuggestions: boolean;\n readonly formatOnType: boolean;\n readonly formatOnPaste: boolean;\n readonly suggestOnTriggerCharacters: boolean;\n readonly acceptSuggestionOnEnter: 'on' | 'smart' | 'off';\n readonly acceptSuggestionOnCommitCharacter: boolean;\n readonly snippetSuggestions: 'top' | 'bottom' | 'inline' | 'none';\n readonly wordBasedSuggestions: boolean;\n readonly suggestFontSize: number;\n readonly suggestLineHeight: number;\n readonly selectionHighlight: boolean;\n readonly occurrencesHighlight: boolean;\n readonly codeLens: boolean;\n readonly folding: boolean;\n readonly showFoldingControls: 'always' | 'mouseover';\n readonly matchBrackets: boolean;\n readonly find: InternalEditorFindOptions;\n }\n\n /**\n * Internal configuration options (transformed or computed) for the editor.\n */\n export class InternalEditorOptions {\n readonly _internalEditorOptionsBrand: void;\n readonly canUseLayerHinting: boolean;\n readonly pixelRatio: number;\n readonly editorClassName: string;\n readonly lineHeight: number;\n readonly readOnly: boolean;\n readonly multiCursorModifier: 'altKey' | 'ctrlKey' | 'metaKey';\n readonly wordSeparators: string;\n readonly autoClosingBrackets: boolean;\n readonly autoIndent: boolean;\n readonly useTabStops: boolean;\n readonly tabFocusMode: boolean;\n readonly dragAndDrop: boolean;\n readonly emptySelectionClipboard: boolean;\n readonly layoutInfo: EditorLayoutInfo;\n readonly fontInfo: FontInfo;\n readonly viewInfo: InternalEditorViewOptions;\n readonly wrappingInfo: EditorWrappingInfo;\n readonly contribInfo: EditorContribOptions;\n }\n\n /**\n * A description for the overview ruler position.\n */\n export interface OverviewRulerPosition {\n /**\n * Width of the overview ruler\n */\n readonly width: number;\n /**\n * Height of the overview ruler\n */\n readonly height: number;\n /**\n * Top position for the overview ruler\n */\n readonly top: number;\n /**\n * Right position for the overview ruler\n */\n readonly right: number;\n }\n\n /**\n * The internal layout details of the editor.\n */\n export interface EditorLayoutInfo {\n /**\n * Full editor width.\n */\n readonly width: number;\n /**\n * Full editor height.\n */\n readonly height: number;\n /**\n * Left position for the glyph margin.\n */\n readonly glyphMarginLeft: number;\n /**\n * The width of the glyph margin.\n */\n readonly glyphMarginWidth: number;\n /**\n * The height of the glyph margin.\n */\n readonly glyphMarginHeight: number;\n /**\n * Left position for the line numbers.\n */\n readonly lineNumbersLeft: number;\n /**\n * The width of the line numbers.\n */\n readonly lineNumbersWidth: number;\n /**\n * The height of the line numbers.\n */\n readonly lineNumbersHeight: number;\n /**\n * Left position for the line decorations.\n */\n readonly decorationsLeft: number;\n /**\n * The width of the line decorations.\n */\n readonly decorationsWidth: number;\n /**\n * The height of the line decorations.\n */\n readonly decorationsHeight: number;\n /**\n * Left position for the content (actual text)\n */\n readonly contentLeft: number;\n /**\n * The width of the content (actual text)\n */\n readonly contentWidth: number;\n /**\n * The height of the content (actual height)\n */\n readonly contentHeight: number;\n /**\n * The width of the minimap\n */\n readonly minimapWidth: number;\n /**\n * Minimap render type\n */\n readonly renderMinimap: RenderMinimap;\n /**\n * The number of columns (of typical characters) fitting on a viewport line.\n */\n readonly viewportColumn: number;\n /**\n * The width of the vertical scrollbar.\n */\n readonly verticalScrollbarWidth: number;\n /**\n * The height of the horizontal scrollbar.\n */\n readonly horizontalScrollbarHeight: number;\n /**\n * The position of the overview ruler.\n */\n readonly overviewRuler: OverviewRulerPosition;\n }\n\n /**\n * An event describing that the configuration of the editor has changed.\n */\n export interface IConfigurationChangedEvent {\n readonly canUseLayerHinting: boolean;\n readonly pixelRatio: boolean;\n readonly editorClassName: boolean;\n readonly lineHeight: boolean;\n readonly readOnly: boolean;\n readonly accessibilitySupport: boolean;\n readonly multiCursorModifier: boolean;\n readonly wordSeparators: boolean;\n readonly autoClosingBrackets: boolean;\n readonly autoIndent: boolean;\n readonly useTabStops: boolean;\n readonly tabFocusMode: boolean;\n readonly dragAndDrop: boolean;\n readonly emptySelectionClipboard: boolean;\n readonly layoutInfo: boolean;\n readonly fontInfo: boolean;\n readonly viewInfo: boolean;\n readonly wrappingInfo: boolean;\n readonly contribInfo: boolean;\n }\n\n /**\n * A view zone is a full horizontal rectangle that 'pushes' text down.\n * The editor reserves space for view zones when rendering.\n */\n export interface IViewZone {\n /**\n * The line number after which this zone should appear.\n * Use 0 to place a view zone before the first line number.\n */\n afterLineNumber: number;\n /**\n * The column after which this zone should appear.\n * If not set, the maxLineColumn of `afterLineNumber` will be used.\n */\n afterColumn?: number;\n /**\n * Suppress mouse down events.\n * If set, the editor will attach a mouse down listener to the view zone and .preventDefault on it.\n * Defaults to false\n */\n suppressMouseDown?: boolean;\n /**\n * The height in lines of the view zone.\n * If specified, `heightInPx` will be used instead of this.\n * If neither `heightInPx` nor `heightInLines` is specified, a default of `heightInLines` = 1 will be chosen.\n */\n heightInLines?: number;\n /**\n * The height in px of the view zone.\n * If this is set, the editor will give preference to it rather than `heightInLines` above.\n * If neither `heightInPx` nor `heightInLines` is specified, a default of `heightInLines` = 1 will be chosen.\n */\n heightInPx?: number;\n /**\n * The dom node of the view zone\n */\n domNode: HTMLElement;\n /**\n * An optional dom node for the view zone that will be placed in the margin area.\n */\n marginDomNode?: HTMLElement;\n /**\n * Callback which gives the relative top of the view zone as it appears (taking scrolling into account).\n */\n onDomNodeTop?: (top: number) => void;\n /**\n * Callback which gives the height in pixels of the view zone.\n */\n onComputedHeight?: (height: number) => void;\n }\n\n /**\n * An accessor that allows for zones to be added or removed.\n */\n export interface IViewZoneChangeAccessor {\n /**\n * Create a new view zone.\n * @param zone Zone to create\n * @return A unique identifier to the view zone.\n */\n addZone(zone: IViewZone): number;\n /**\n * Remove a zone\n * @param id A unique identifier to the view zone, as returned by the `addZone` call.\n */\n removeZone(id: number): void;\n /**\n * Change a zone's position.\n * The editor will rescan the `afterLineNumber` and `afterColumn` properties of a view zone.\n */\n layoutZone(id: number): void;\n }\n\n /**\n * A positioning preference for rendering content widgets.\n */\n export enum ContentWidgetPositionPreference {\n /**\n * Place the content widget exactly at a position\n */\n EXACT = 0,\n /**\n * Place the content widget above a position\n */\n ABOVE = 1,\n /**\n * Place the content widget below a position\n */\n BELOW = 2,\n }\n\n /**\n * A position for rendering content widgets.\n */\n export interface IContentWidgetPosition {\n /**\n * Desired position for the content widget.\n * `preference` will also affect the placement.\n */\n position: IPosition;\n /**\n * Placement preference for position, in order of preference.\n */\n preference: ContentWidgetPositionPreference[];\n }\n\n /**\n * A content widget renders inline with the text and can be easily placed 'near' an editor position.\n */\n export interface IContentWidget {\n /**\n * Render this content widget in a location where it could overflow the editor's view dom node.\n */\n allowEditorOverflow?: boolean;\n suppressMouseDown?: boolean;\n /**\n * Get a unique identifier of the content widget.\n */\n getId(): string;\n /**\n * Get the dom node of the content widget.\n */\n getDomNode(): HTMLElement;\n /**\n * Get the placement of the content widget.\n * If null is returned, the content widget will be placed off screen.\n */\n getPosition(): IContentWidgetPosition;\n }\n\n /**\n * A positioning preference for rendering overlay widgets.\n */\n export enum OverlayWidgetPositionPreference {\n /**\n * Position the overlay widget in the top right corner\n */\n TOP_RIGHT_CORNER = 0,\n /**\n * Position the overlay widget in the bottom right corner\n */\n BOTTOM_RIGHT_CORNER = 1,\n /**\n * Position the overlay widget in the top center\n */\n TOP_CENTER = 2,\n }\n\n /**\n * A position for rendering overlay widgets.\n */\n export interface IOverlayWidgetPosition {\n /**\n * The position preference for the overlay widget.\n */\n preference: OverlayWidgetPositionPreference;\n }\n\n /**\n * An overlay widgets renders on top of the text.\n */\n export interface IOverlayWidget {\n /**\n * Get a unique identifier of the overlay widget.\n */\n getId(): string;\n /**\n * Get the dom node of the overlay widget.\n */\n getDomNode(): HTMLElement;\n /**\n * Get the placement of the overlay widget.\n * If null is returned, the overlay widget is responsible to place itself.\n */\n getPosition(): IOverlayWidgetPosition;\n }\n\n /**\n * Type of hit element with the mouse in the editor.\n */\n export enum MouseTargetType {\n /**\n * Mouse is on top of an unknown element.\n */\n UNKNOWN = 0,\n /**\n * Mouse is on top of the textarea used for input.\n */\n TEXTAREA = 1,\n /**\n * Mouse is on top of the glyph margin\n */\n GUTTER_GLYPH_MARGIN = 2,\n /**\n * Mouse is on top of the line numbers\n */\n GUTTER_LINE_NUMBERS = 3,\n /**\n * Mouse is on top of the line decorations\n */\n GUTTER_LINE_DECORATIONS = 4,\n /**\n * Mouse is on top of the whitespace left in the gutter by a view zone.\n */\n GUTTER_VIEW_ZONE = 5,\n /**\n * Mouse is on top of text in the content.\n */\n CONTENT_TEXT = 6,\n /**\n * Mouse is on top of empty space in the content (e.g. after line text or below last line)\n */\n CONTENT_EMPTY = 7,\n /**\n * Mouse is on top of a view zone in the content.\n */\n CONTENT_VIEW_ZONE = 8,\n /**\n * Mouse is on top of a content widget.\n */\n CONTENT_WIDGET = 9,\n /**\n * Mouse is on top of the decorations overview ruler.\n */\n OVERVIEW_RULER = 10,\n /**\n * Mouse is on top of a scrollbar.\n */\n SCROLLBAR = 11,\n /**\n * Mouse is on top of an overlay widget.\n */\n OVERLAY_WIDGET = 12,\n /**\n * Mouse is outside of the editor.\n */\n OUTSIDE_EDITOR = 13,\n }\n\n /**\n * Target hit with the mouse in the editor.\n */\n export interface IMouseTarget {\n /**\n * The target element\n */\n readonly element: Element;\n /**\n * The target type\n */\n readonly type: MouseTargetType;\n /**\n * The 'approximate' editor position\n */\n readonly position: Position;\n /**\n * Desired mouse column (e.g. when position.column gets clamped to text length -- clicking after text on a line).\n */\n readonly mouseColumn: number;\n /**\n * The 'approximate' editor range\n */\n readonly range: Range;\n /**\n * Some extra detail.\n */\n readonly detail: any;\n }\n\n /**\n * A mouse event originating from the editor.\n */\n export interface IEditorMouseEvent {\n readonly event: IMouseEvent;\n readonly target: IMouseTarget;\n }\n\n /**\n * A rich code editor.\n */\n export interface ICodeEditor extends ICommonCodeEditor {\n /**\n * An event emitted on a \"mouseup\".\n * @event\n */\n onMouseUp(listener: (e: IEditorMouseEvent) => void): IDisposable;\n /**\n * An event emitted on a \"mousedown\".\n * @event\n */\n onMouseDown(listener: (e: IEditorMouseEvent) => void): IDisposable;\n /**\n * An event emitted on a \"contextmenu\".\n * @event\n */\n onContextMenu(listener: (e: IEditorMouseEvent) => void): IDisposable;\n /**\n * An event emitted on a \"mousemove\".\n * @event\n */\n onMouseMove(listener: (e: IEditorMouseEvent) => void): IDisposable;\n /**\n * An event emitted on a \"mouseleave\".\n * @event\n */\n onMouseLeave(listener: (e: IEditorMouseEvent) => void): IDisposable;\n /**\n * An event emitted on a \"keyup\".\n * @event\n */\n onKeyUp(listener: (e: IKeyboardEvent) => void): IDisposable;\n /**\n * An event emitted on a \"keydown\".\n * @event\n */\n onKeyDown(listener: (e: IKeyboardEvent) => void): IDisposable;\n /**\n * An event emitted when the layout of the editor has changed.\n * @event\n */\n onDidLayoutChange(listener: (e: EditorLayoutInfo) => void): IDisposable;\n /**\n * An event emitted when the scroll in the editor has changed.\n * @event\n */\n onDidScrollChange(listener: (e: IScrollEvent) => void): IDisposable;\n /**\n * Returns the editor's dom node\n */\n getDomNode(): HTMLElement;\n /**\n * Add a content widget. Widgets must have unique ids, otherwise they will be overwritten.\n */\n addContentWidget(widget: IContentWidget): void;\n /**\n * Layout/Reposition a content widget. This is a ping to the editor to call widget.getPosition()\n * and update appropiately.\n */\n layoutContentWidget(widget: IContentWidget): void;\n /**\n * Remove a content widget.\n */\n removeContentWidget(widget: IContentWidget): void;\n /**\n * Add an overlay widget. Widgets must have unique ids, otherwise they will be overwritten.\n */\n addOverlayWidget(widget: IOverlayWidget): void;\n /**\n * Layout/Reposition an overlay widget. This is a ping to the editor to call widget.getPosition()\n * and update appropiately.\n */\n layoutOverlayWidget(widget: IOverlayWidget): void;\n /**\n * Remove an overlay widget.\n */\n removeOverlayWidget(widget: IOverlayWidget): void;\n /**\n * Change the view zones. View zones are lost when a new model is attached to the editor.\n */\n changeViewZones(callback: (accessor: IViewZoneChangeAccessor) => void): void;\n /**\n * Returns the range that is currently centered in the view port.\n */\n getCenteredRangeInViewport(): Range;\n /**\n * Get the horizontal position (left offset) for the column w.r.t to the beginning of the line.\n * This method works only if the line `lineNumber` is currently rendered (in the editor's viewport).\n * Use this method with caution.\n */\n getOffsetForColumn(lineNumber: number, column: number): number;\n /**\n * Force an editor render now.\n */\n render(): void;\n /**\n * Get the vertical position (top offset) for the line w.r.t. to the first line.\n */\n getTopForLineNumber(lineNumber: number): number;\n /**\n * Get the vertical position (top offset) for the position w.r.t. to the first line.\n */\n getTopForPosition(lineNumber: number, column: number): number;\n /**\n * Get the hit test target at coordinates `clientX` and `clientY`.\n * The coordinates are relative to the top-left of the viewport.\n *\n * @returns Hit test target or null if the coordinates fall outside the editor or the editor has no model.\n */\n getTargetAtClientPoint(clientX: number, clientY: number): IMouseTarget;\n /**\n * Get the visible position for `position`.\n * The result position takes scrolling into account and is relative to the top left corner of the editor.\n * Explanation 1: the results of this method will change for the same `position` if the user scrolls the editor.\n * Explanation 2: the results of this method will not change if the container of the editor gets repositioned.\n * Warning: the results of this method are innacurate for positions that are outside the current editor viewport.\n */\n getScrolledVisiblePosition(position: IPosition): {\n top: number;\n left: number;\n height: number;\n };\n /**\n * Apply the same font settings as the editor to `target`.\n */\n applyFontInfo(target: HTMLElement): void;\n }\n\n /**\n * A rich diff editor.\n */\n export interface IDiffEditor extends ICommonDiffEditor {\n /**\n * @see ICodeEditor.getDomNode\n */\n getDomNode(): HTMLElement;\n }\n\n export class FontInfo extends BareFontInfo {\n readonly _editorStylingBrand: void;\n readonly isTrusted: boolean;\n readonly isMonospace: boolean;\n readonly typicalHalfwidthCharacterWidth: number;\n readonly typicalFullwidthCharacterWidth: number;\n readonly spaceWidth: number;\n readonly maxDigitWidth: number;\n }\n export class BareFontInfo {\n readonly _bareFontInfoBrand: void;\n readonly zoomLevel: number;\n readonly fontFamily: string;\n readonly fontWeight: string;\n readonly fontSize: number;\n readonly lineHeight: number;\n readonly letterSpacing: number;\n }\n}\n\ndeclare module monaco.languages {\n\n\n /**\n * Register information about a new language.\n */\n export function register(language: ILanguageExtensionPoint): void;\n\n /**\n * Get the information of all the registered languages.\n */\n export function getLanguages(): ILanguageExtensionPoint[];\n\n /**\n * An event emitted when a language is first time needed (e.g. a model has it set).\n * @event\n */\n export function onLanguage(languageId: string, callback: () => void): IDisposable;\n\n /**\n * Set the editing configuration for a language.\n */\n export function setLanguageConfiguration(languageId: string, configuration: LanguageConfiguration): IDisposable;\n\n /**\n * A token.\n */\n export interface IToken {\n startIndex: number;\n scopes: string;\n }\n\n /**\n * The result of a line tokenization.\n */\n export interface ILineTokens {\n /**\n * The list of tokens on the line.\n */\n tokens: IToken[];\n /**\n * The tokenization end state.\n * A pointer will be held to this and the object should not be modified by the tokenizer after the pointer is returned.\n */\n endState: IState;\n }\n\n /**\n * A \"manual\" provider of tokens.\n */\n export interface TokensProvider {\n /**\n * The initial state of a language. Will be the state passed in to tokenize the first line.\n */\n getInitialState(): IState;\n /**\n * Tokenize a line given the state at the beginning of the line.\n */\n tokenize(line: string, state: IState): ILineTokens;\n }\n\n /**\n * Set the tokens provider for a language (manual implementation).\n */\n export function setTokensProvider(languageId: string, provider: TokensProvider): IDisposable;\n\n /**\n * Set the tokens provider for a language (monarch implementation).\n */\n export function setMonarchTokensProvider(languageId: string, languageDef: IMonarchLanguage): IDisposable;\n\n /**\n * Register a reference provider (used by e.g. reference search).\n */\n export function registerReferenceProvider(languageId: string, provider: ReferenceProvider): IDisposable;\n\n /**\n * Register a rename provider (used by e.g. rename symbol).\n */\n export function registerRenameProvider(languageId: string, provider: RenameProvider): IDisposable;\n\n /**\n * Register a signature help provider (used by e.g. paremeter hints).\n */\n export function registerSignatureHelpProvider(languageId: string, provider: SignatureHelpProvider): IDisposable;\n\n /**\n * Register a hover provider (used by e.g. editor hover).\n */\n export function registerHoverProvider(languageId: string, provider: HoverProvider): IDisposable;\n\n /**\n * Register a document symbol provider (used by e.g. outline).\n */\n export function registerDocumentSymbolProvider(languageId: string, provider: DocumentSymbolProvider): IDisposable;\n\n /**\n * Register a document highlight provider (used by e.g. highlight occurrences).\n */\n export function registerDocumentHighlightProvider(languageId: string, provider: DocumentHighlightProvider): IDisposable;\n\n /**\n * Register a definition provider (used by e.g. go to definition).\n */\n export function registerDefinitionProvider(languageId: string, provider: DefinitionProvider): IDisposable;\n\n /**\n * Register a implementation provider (used by e.g. go to implementation).\n */\n export function registerImplementationProvider(languageId: string, provider: ImplementationProvider): IDisposable;\n\n /**\n * Register a type definition provider (used by e.g. go to type definition).\n */\n export function registerTypeDefinitionProvider(languageId: string, provider: TypeDefinitionProvider): IDisposable;\n\n /**\n * Register a code lens provider (used by e.g. inline code lenses).\n */\n export function registerCodeLensProvider(languageId: string, provider: CodeLensProvider): IDisposable;\n\n /**\n * Register a code action provider (used by e.g. quick fix).\n */\n export function registerCodeActionProvider(languageId: string, provider: CodeActionProvider): IDisposable;\n\n /**\n * Register a formatter that can handle only entire models.\n */\n export function registerDocumentFormattingEditProvider(languageId: string, provider: DocumentFormattingEditProvider): IDisposable;\n\n /**\n * Register a formatter that can handle a range inside a model.\n */\n export function registerDocumentRangeFormattingEditProvider(languageId: string, provider: DocumentRangeFormattingEditProvider): IDisposable;\n\n /**\n * Register a formatter than can do formatting as the user types.\n */\n export function registerOnTypeFormattingEditProvider(languageId: string, provider: OnTypeFormattingEditProvider): IDisposable;\n\n /**\n * Register a link provider that can find links in text.\n */\n export function registerLinkProvider(languageId: string, provider: LinkProvider): IDisposable;\n\n /**\n * Register a completion item provider (use by e.g. suggestions).\n */\n export function registerCompletionItemProvider(languageId: string, provider: CompletionItemProvider): IDisposable;\n\n /**\n * Contains additional diagnostic information about the context in which\n * a [code action](#CodeActionProvider.provideCodeActions) is run.\n */\n export interface CodeActionContext {\n /**\n * An array of diagnostics.\n *\n * @readonly\n */\n readonly markers: editor.IMarkerData[];\n }\n\n /**\n * The code action interface defines the contract between extensions and\n * the [light bulb](https://code.visualstudio.com/docs/editor/editingevolved#_code-action) feature.\n */\n export interface CodeActionProvider {\n /**\n * Provide commands for the given document and range.\n */\n provideCodeActions(model: editor.IReadOnlyModel, range: Range, context: CodeActionContext, token: CancellationToken): Command[] | Thenable;\n }\n\n /**\n * Completion item kinds.\n */\n export enum CompletionItemKind {\n Text = 0,\n Method = 1,\n Function = 2,\n Constructor = 3,\n Field = 4,\n Variable = 5,\n Class = 6,\n Interface = 7,\n Module = 8,\n Property = 9,\n Unit = 10,\n Value = 11,\n Enum = 12,\n Keyword = 13,\n Snippet = 14,\n Color = 15,\n File = 16,\n Reference = 17,\n Folder = 18,\n }\n\n /**\n * A snippet string is a template which allows to insert text\n * and to control the editor cursor when insertion happens.\n *\n * A snippet can define tab stops and placeholders with `$1`, `$2`\n * and `${3:foo}`. `$0` defines the final tab stop, it defaults to\n * the end of the snippet. Variables are defined with `$name` and\n * `${name:default value}`. The full snippet syntax is documented\n * [here](http://code.visualstudio.com/docs/editor/userdefinedsnippets#_creating-your-own-snippets).\n */\n export interface SnippetString {\n /**\n * The snippet string.\n */\n value: string;\n }\n\n /**\n * A completion item represents a text snippet that is\n * proposed to complete text that is being typed.\n */\n export interface CompletionItem {\n /**\n * The label of this completion item. By default\n * this is also the text that is inserted when selecting\n * this completion.\n */\n label: string;\n /**\n * The kind of this completion item. Based on the kind\n * an icon is chosen by the editor.\n */\n kind: CompletionItemKind;\n /**\n * A human-readable string with additional information\n * about this item, like type or symbol information.\n */\n detail?: string;\n /**\n * A human-readable string that represents a doc-comment.\n */\n documentation?: string;\n /**\n * A string that should be used when comparing this item\n * with other items. When `falsy` the [label](#CompletionItem.label)\n * is used.\n */\n sortText?: string;\n /**\n * A string that should be used when filtering a set of\n * completion items. When `falsy` the [label](#CompletionItem.label)\n * is used.\n */\n filterText?: string;\n /**\n * A string or snippet that should be inserted in a document when selecting\n * this completion. When `falsy` the [label](#CompletionItem.label)\n * is used.\n */\n insertText?: string | SnippetString;\n /**\n * A range of text that should be replaced by this completion item.\n *\n * Defaults to a range from the start of the [current word](#TextDocument.getWordRangeAtPosition) to the\n * current position.\n *\n * *Note:* The range must be a [single line](#Range.isSingleLine) and it must\n * [contain](#Range.contains) the position at which completion has been [requested](#CompletionItemProvider.provideCompletionItems).\n */\n range?: Range;\n /**\n * @deprecated **Deprecated** in favor of `CompletionItem.insertText` and `CompletionItem.range`.\n *\n * ~~An [edit](#TextEdit) which is applied to a document when selecting\n * this completion. When an edit is provided the value of\n * [insertText](#CompletionItem.insertText) is ignored.~~\n *\n * ~~The [range](#Range) of the edit must be single-line and on the same\n * line completions were [requested](#CompletionItemProvider.provideCompletionItems) at.~~\n */\n textEdit?: editor.ISingleEditOperation;\n }\n\n /**\n * Represents a collection of [completion items](#CompletionItem) to be presented\n * in the editor.\n */\n export interface CompletionList {\n /**\n * This list it not complete. Further typing should result in recomputing\n * this list.\n */\n isIncomplete?: boolean;\n /**\n * The completion items.\n */\n items: CompletionItem[];\n }\n\n /**\n * The completion item provider interface defines the contract between extensions and\n * the [IntelliSense](https://code.visualstudio.com/docs/editor/intellisense).\n *\n * When computing *complete* completion items is expensive, providers can optionally implement\n * the `resolveCompletionItem`-function. In that case it is enough to return completion\n * items with a [label](#CompletionItem.label) from the\n * [provideCompletionItems](#CompletionItemProvider.provideCompletionItems)-function. Subsequently,\n * when a completion item is shown in the UI and gains focus this provider is asked to resolve\n * the item, like adding [doc-comment](#CompletionItem.documentation) or [details](#CompletionItem.detail).\n */\n export interface CompletionItemProvider {\n triggerCharacters?: string[];\n /**\n * Provide completion items for the given position and document.\n */\n provideCompletionItems(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): CompletionItem[] | Thenable | CompletionList | Thenable;\n /**\n * Given a completion item fill in more data, like [doc-comment](#CompletionItem.documentation)\n * or [details](#CompletionItem.detail).\n *\n * The editor will only resolve a completion item once.\n */\n resolveCompletionItem?(item: CompletionItem, token: CancellationToken): CompletionItem | Thenable;\n }\n\n /**\n * Describes how comments for a language work.\n */\n export interface CommentRule {\n /**\n * The line comment token, like `// this is a comment`\n */\n lineComment?: string;\n /**\n * The block comment character pair, like `/* block comment */`\n */\n blockComment?: CharacterPair;\n }\n\n /**\n * The language configuration interface defines the contract between extensions and\n * various editor features, like automatic bracket insertion, automatic indentation etc.\n */\n export interface LanguageConfiguration {\n /**\n * The language's comment settings.\n */\n comments?: CommentRule;\n /**\n * The language's brackets.\n * This configuration implicitly affects pressing Enter around these brackets.\n */\n brackets?: CharacterPair[];\n /**\n * The language's word definition.\n * If the language supports Unicode identifiers (e.g. JavaScript), it is preferable\n * to provide a word definition that uses exclusion of known separators.\n * e.g.: A regex that matches anything except known separators (and dot is allowed to occur in a floating point number):\n * /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g\n */\n wordPattern?: RegExp;\n /**\n * The language's indentation settings.\n */\n indentationRules?: IndentationRule;\n /**\n * The language's rules to be evaluated when pressing Enter.\n */\n onEnterRules?: OnEnterRule[];\n /**\n * The language's auto closing pairs. The 'close' character is automatically inserted with the\n * 'open' character is typed. If not set, the configured brackets will be used.\n */\n autoClosingPairs?: IAutoClosingPairConditional[];\n /**\n * The language's surrounding pairs. When the 'open' character is typed on a selection, the\n * selected string is surrounded by the open and close characters. If not set, the autoclosing pairs\n * settings will be used.\n */\n surroundingPairs?: IAutoClosingPair[];\n /**\n * **Deprecated** Do not use.\n *\n * @deprecated Will be replaced by a better API soon.\n */\n __electricCharacterSupport?: IBracketElectricCharacterContribution;\n }\n\n /**\n * Describes indentation rules for a language.\n */\n export interface IndentationRule {\n /**\n * If a line matches this pattern, then all the lines after it should be unindendented once (until another rule matches).\n */\n decreaseIndentPattern: RegExp;\n /**\n * If a line matches this pattern, then all the lines after it should be indented once (until another rule matches).\n */\n increaseIndentPattern: RegExp;\n /**\n * If a line matches this pattern, then **only the next line** after it should be indented once.\n */\n indentNextLinePattern?: RegExp;\n /**\n * If a line matches this pattern, then its indentation should not be changed and it should not be evaluated against the other rules.\n */\n unIndentedLinePattern?: RegExp;\n }\n\n /**\n * Describes a rule to be evaluated when pressing Enter.\n */\n export interface OnEnterRule {\n /**\n * This rule will only execute if the text before the cursor matches this regular expression.\n */\n beforeText: RegExp;\n /**\n * This rule will only execute if the text after the cursor matches this regular expression.\n */\n afterText?: RegExp;\n /**\n * The action to execute.\n */\n action: EnterAction;\n }\n\n export interface IBracketElectricCharacterContribution {\n docComment?: IDocComment;\n }\n\n /**\n * Definition of documentation comments (e.g. Javadoc/JSdoc)\n */\n export interface IDocComment {\n /**\n * The string that starts a doc comment (e.g. '/**')\n */\n open: string;\n /**\n * The string that appears on the last line and closes the doc comment (e.g. ' * /').\n */\n close: string;\n }\n\n /**\n * A tuple of two characters, like a pair of\n * opening and closing brackets.\n */\n export type CharacterPair = [string, string];\n\n export interface IAutoClosingPair {\n open: string;\n close: string;\n }\n\n export interface IAutoClosingPairConditional extends IAutoClosingPair {\n notIn?: string[];\n }\n\n /**\n * Describes what to do with the indentation when pressing Enter.\n */\n export enum IndentAction {\n /**\n * Insert new line and copy the previous line's indentation.\n */\n None = 0,\n /**\n * Insert new line and indent once (relative to the previous line's indentation).\n */\n Indent = 1,\n /**\n * Insert two new lines:\n * - the first one indented which will hold the cursor\n * - the second one at the same indentation level\n */\n IndentOutdent = 2,\n /**\n * Insert new line and outdent once (relative to the previous line's indentation).\n */\n Outdent = 3,\n }\n\n /**\n * Describes what to do when pressing Enter.\n */\n export interface EnterAction {\n /**\n * Describe what to do with the indentation.\n */\n indentAction: IndentAction;\n /**\n * Describe whether to outdent current line.\n */\n outdentCurrentLine?: boolean;\n /**\n * Describes text to be appended after the new line and after the indentation.\n */\n appendText?: string;\n /**\n * Describes the number of characters to remove from the new line's indentation.\n */\n removeText?: number;\n }\n\n /**\n * The state of the tokenizer between two lines.\n * It is useful to store flags such as in multiline comment, etc.\n * The model will clone the previous line's state and pass it in to tokenize the next line.\n */\n export interface IState {\n clone(): IState;\n equals(other: IState): boolean;\n }\n\n /**\n * A hover represents additional information for a symbol or word. Hovers are\n * rendered in a tooltip-like widget.\n */\n export interface Hover {\n /**\n * The contents of this hover.\n */\n contents: MarkedString[];\n /**\n * The range to which this hover applies. When missing, the\n * editor will use the range at the current position or the\n * current position itself.\n */\n range: IRange;\n }\n\n /**\n * The hover provider interface defines the contract between extensions and\n * the [hover](https://code.visualstudio.com/docs/editor/intellisense)-feature.\n */\n export interface HoverProvider {\n /**\n * Provide a hover for the given position and document. Multiple hovers at the same\n * position will be merged by the editor. A hover can have a range which defaults\n * to the word range at the position when omitted.\n */\n provideHover(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Hover | Thenable;\n }\n\n /**\n * Represents a parameter of a callable-signature. A parameter can\n * have a label and a doc-comment.\n */\n export interface ParameterInformation {\n /**\n * The label of this signature. Will be shown in\n * the UI.\n */\n label: string;\n /**\n * The human-readable doc-comment of this signature. Will be shown\n * in the UI but can be omitted.\n */\n documentation?: string;\n }\n\n /**\n * Represents the signature of something callable. A signature\n * can have a label, like a function-name, a doc-comment, and\n * a set of parameters.\n */\n export interface SignatureInformation {\n /**\n * The label of this signature. Will be shown in\n * the UI.\n */\n label: string;\n /**\n * The human-readable doc-comment of this signature. Will be shown\n * in the UI but can be omitted.\n */\n documentation?: string;\n /**\n * The parameters of this signature.\n */\n parameters: ParameterInformation[];\n }\n\n /**\n * Signature help represents the signature of something\n * callable. There can be multiple signatures but only one\n * active and only one active parameter.\n */\n export interface SignatureHelp {\n /**\n * One or more signatures.\n */\n signatures: SignatureInformation[];\n /**\n * The active signature.\n */\n activeSignature: number;\n /**\n * The active parameter of the active signature.\n */\n activeParameter: number;\n }\n\n /**\n * The signature help provider interface defines the contract between extensions and\n * the [parameter hints](https://code.visualstudio.com/docs/editor/intellisense)-feature.\n */\n export interface SignatureHelpProvider {\n signatureHelpTriggerCharacters: string[];\n /**\n * Provide help for the signature at the given position and document.\n */\n provideSignatureHelp(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): SignatureHelp | Thenable;\n }\n\n /**\n * A document highlight kind.\n */\n export enum DocumentHighlightKind {\n /**\n * A textual occurrence.\n */\n Text = 0,\n /**\n * Read-access of a symbol, like reading a variable.\n */\n Read = 1,\n /**\n * Write-access of a symbol, like writing to a variable.\n */\n Write = 2,\n }\n\n /**\n * A document highlight is a range inside a text document which deserves\n * special attention. Usually a document highlight is visualized by changing\n * the background color of its range.\n */\n export interface DocumentHighlight {\n /**\n * The range this highlight applies to.\n */\n range: IRange;\n /**\n * The highlight kind, default is [text](#DocumentHighlightKind.Text).\n */\n kind: DocumentHighlightKind;\n }\n\n /**\n * The document highlight provider interface defines the contract between extensions and\n * the word-highlight-feature.\n */\n export interface DocumentHighlightProvider {\n /**\n * Provide a set of document highlights, like all occurrences of a variable or\n * all exit-points of a function.\n */\n provideDocumentHighlights(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): DocumentHighlight[] | Thenable;\n }\n\n /**\n * Value-object that contains additional information when\n * requesting references.\n */\n export interface ReferenceContext {\n /**\n * Include the declaration of the current symbol.\n */\n includeDeclaration: boolean;\n }\n\n /**\n * The reference provider interface defines the contract between extensions and\n * the [find references](https://code.visualstudio.com/docs/editor/editingevolved#_peek)-feature.\n */\n export interface ReferenceProvider {\n /**\n * Provide a set of project-wide references for the given position and document.\n */\n provideReferences(model: editor.IReadOnlyModel, position: Position, context: ReferenceContext, token: CancellationToken): Location[] | Thenable;\n }\n\n /**\n * Represents a location inside a resource, such as a line\n * inside a text file.\n */\n export interface Location {\n /**\n * The resource identifier of this location.\n */\n uri: Uri;\n /**\n * The document range of this locations.\n */\n range: IRange;\n }\n\n /**\n * The definition of a symbol represented as one or many [locations](#Location).\n * For most programming languages there is only one location at which a symbol is\n * defined.\n */\n export type Definition = Location | Location[];\n\n /**\n * The definition provider interface defines the contract between extensions and\n * the [go to definition](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-definition)\n * and peek definition features.\n */\n export interface DefinitionProvider {\n /**\n * Provide the definition of the symbol at the given position and document.\n */\n provideDefinition(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Definition | Thenable;\n }\n\n /**\n * The implementation provider interface defines the contract between extensions and\n * the go to implementation feature.\n */\n export interface ImplementationProvider {\n /**\n * Provide the implementation of the symbol at the given position and document.\n */\n provideImplementation(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Definition | Thenable;\n }\n\n /**\n * The type definition provider interface defines the contract between extensions and\n * the go to type definition feature.\n */\n export interface TypeDefinitionProvider {\n /**\n * Provide the type definition of the symbol at the given position and document.\n */\n provideTypeDefinition(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Definition | Thenable;\n }\n\n /**\n * A symbol kind.\n */\n export enum SymbolKind {\n File = 0,\n Module = 1,\n Namespace = 2,\n Package = 3,\n Class = 4,\n Method = 5,\n Property = 6,\n Field = 7,\n Constructor = 8,\n Enum = 9,\n Interface = 10,\n Function = 11,\n Variable = 12,\n Constant = 13,\n String = 14,\n Number = 15,\n Boolean = 16,\n Array = 17,\n Object = 18,\n Key = 19,\n Null = 20,\n EnumMember = 21,\n Struct = 22,\n Event = 23,\n Operator = 24,\n TypeParameter = 25,\n }\n\n /**\n * Represents information about programming constructs like variables, classes,\n * interfaces etc.\n */\n export interface SymbolInformation {\n /**\n * The name of this symbol.\n */\n name: string;\n /**\n * The name of the symbol containing this symbol.\n */\n containerName?: string;\n /**\n * The kind of this symbol.\n */\n kind: SymbolKind;\n /**\n * The location of this symbol.\n */\n location: Location;\n }\n\n /**\n * The document symbol provider interface defines the contract between extensions and\n * the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_goto-symbol)-feature.\n */\n export interface DocumentSymbolProvider {\n /**\n * Provide symbol information for the given document.\n */\n provideDocumentSymbols(model: editor.IReadOnlyModel, token: CancellationToken): SymbolInformation[] | Thenable;\n }\n\n export interface TextEdit {\n range: IRange;\n text: string;\n eol?: editor.EndOfLineSequence;\n }\n\n /**\n * Interface used to format a model\n */\n export interface FormattingOptions {\n /**\n * Size of a tab in spaces.\n */\n tabSize: number;\n /**\n * Prefer spaces over tabs.\n */\n insertSpaces: boolean;\n }\n\n /**\n * The document formatting provider interface defines the contract between extensions and\n * the formatting-feature.\n */\n export interface DocumentFormattingEditProvider {\n /**\n * Provide formatting edits for a whole document.\n */\n provideDocumentFormattingEdits(model: editor.IReadOnlyModel, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;\n }\n\n /**\n * The document formatting provider interface defines the contract between extensions and\n * the formatting-feature.\n */\n export interface DocumentRangeFormattingEditProvider {\n /**\n * Provide formatting edits for a range in a document.\n *\n * The given range is a hint and providers can decide to format a smaller\n * or larger range. Often this is done by adjusting the start and end\n * of the range to full syntax nodes.\n */\n provideDocumentRangeFormattingEdits(model: editor.IReadOnlyModel, range: Range, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;\n }\n\n /**\n * The document formatting provider interface defines the contract between extensions and\n * the formatting-feature.\n */\n export interface OnTypeFormattingEditProvider {\n autoFormatTriggerCharacters: string[];\n /**\n * Provide formatting edits after a character has been typed.\n *\n * The given position and character should hint to the provider\n * what range the position to expand to, like find the matching `{`\n * when `}` has been entered.\n */\n provideOnTypeFormattingEdits(model: editor.IReadOnlyModel, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;\n }\n\n /**\n * A link inside the editor.\n */\n export interface ILink {\n range: IRange;\n url: string;\n }\n\n /**\n * A provider of links.\n */\n export interface LinkProvider {\n provideLinks(model: editor.IReadOnlyModel, token: CancellationToken): ILink[] | Thenable;\n resolveLink?: (link: ILink, token: CancellationToken) => ILink | Thenable;\n }\n\n export interface IResourceEdit {\n resource: Uri;\n range: IRange;\n newText: string;\n }\n\n export interface WorkspaceEdit {\n edits: IResourceEdit[];\n rejectReason?: string;\n }\n\n export interface RenameProvider {\n provideRenameEdits(model: editor.IReadOnlyModel, position: Position, newName: string, token: CancellationToken): WorkspaceEdit | Thenable;\n }\n\n export interface Command {\n id: string;\n title: string;\n tooltip?: string;\n arguments?: any[];\n }\n\n export interface ICodeLensSymbol {\n range: IRange;\n id?: string;\n command?: Command;\n }\n\n export interface CodeLensProvider {\n onDidChange?: IEvent;\n provideCodeLenses(model: editor.IReadOnlyModel, token: CancellationToken): ICodeLensSymbol[] | Thenable;\n resolveCodeLens?(model: editor.IReadOnlyModel, codeLens: ICodeLensSymbol, token: CancellationToken): ICodeLensSymbol | Thenable;\n }\n\n export interface ILanguageExtensionPoint {\n id: string;\n extensions?: string[];\n filenames?: string[];\n filenamePatterns?: string[];\n firstLine?: string;\n aliases?: string[];\n mimetypes?: string[];\n configuration?: string;\n }\n /**\n * A Monarch language definition\n */\n export interface IMonarchLanguage {\n /**\n * map from string to ILanguageRule[]\n */\n tokenizer: {\n [name: string]: IMonarchLanguageRule[];\n };\n /**\n * is the language case insensitive?\n */\n ignoreCase?: boolean;\n /**\n * if no match in the tokenizer assign this token class (default 'source')\n */\n defaultToken?: string;\n /**\n * for example [['{','}','delimiter.curly']]\n */\n brackets?: IMonarchLanguageBracket[];\n /**\n * start symbol in the tokenizer (by default the first entry is used)\n */\n start?: string;\n /**\n * attach this to every token class (by default '.' + name)\n */\n tokenPostfix: string;\n }\n\n /**\n * A rule is either a regular expression and an action\n * \t\tshorthands: [reg,act] == { regex: reg, action: act}\n *\t\tand : [reg,act,nxt] == { regex: reg, action: act{ next: nxt }}\n */\n export interface IMonarchLanguageRule {\n /**\n * match tokens\n */\n regex?: string | RegExp;\n /**\n * action to take on match\n */\n action?: IMonarchLanguageAction;\n /**\n * or an include rule. include all rules from the included state\n */\n include?: string;\n }\n\n /**\n * An action is either an array of actions...\n * ... or a case statement with guards...\n * ... or a basic action with a token value.\n */\n export interface IMonarchLanguageAction {\n /**\n * array of actions for each parenthesized match group\n */\n group?: IMonarchLanguageAction[];\n /**\n * map from string to ILanguageAction\n */\n cases?: Object;\n /**\n * token class (ie. css class) (or \"@brackets\" or \"@rematch\")\n */\n token?: string;\n /**\n * the next state to push, or \"@push\", \"@pop\", \"@popall\"\n */\n next?: string;\n /**\n * switch to this state\n */\n switchTo?: string;\n /**\n * go back n characters in the stream\n */\n goBack?: number;\n /**\n * @open or @close\n */\n bracket?: string;\n /**\n * switch to embedded language (useing the mimetype) or get out using \"@pop\"\n */\n nextEmbedded?: string;\n /**\n * log a message to the browser console window\n */\n log?: string;\n }\n\n /**\n * This interface can be shortened as an array, ie. ['{','}','delimiter.curly']\n */\n export interface IMonarchLanguageBracket {\n /**\n * open bracket\n */\n open: string;\n /**\n * closeing bracket\n */\n close: string;\n /**\n * token class\n */\n token: string;\n }\n\n}\n\ndeclare module monaco.worker {\n\n\n export interface IMirrorModel {\n readonly uri: Uri;\n readonly version: number;\n getValue(): string;\n }\n\n export interface IWorkerContext {\n /**\n * Get all available mirror models in this worker.\n */\n getMirrorModels(): IMirrorModel[];\n }\n\n}\n\n\ndeclare module monaco.languages.typescript {\n\n enum ModuleKind {\n None = 0,\n CommonJS = 1,\n AMD = 2,\n UMD = 3,\n System = 4,\n ES2015 = 5,\n }\n enum JsxEmit {\n None = 0,\n Preserve = 1,\n React = 2,\n }\n enum NewLineKind {\n CarriageReturnLineFeed = 0,\n LineFeed = 1,\n }\n\n enum ScriptTarget {\n ES3 = 0,\n ES5 = 1,\n ES2015 = 2,\n ES2016 = 3,\n ES2017 = 4,\n ESNext = 5,\n Latest = 5,\n }\n\n export enum ModuleResolutionKind {\n Classic = 1,\n NodeJs = 2,\n }\n\n type CompilerOptionsValue = string | number | boolean | (string | number)[] | string[];\n interface CompilerOptions {\n allowJs?: boolean;\n allowSyntheticDefaultImports?: boolean;\n allowUnreachableCode?: boolean;\n allowUnusedLabels?: boolean;\n alwaysStrict?: boolean;\n baseUrl?: string;\n charset?: string;\n declaration?: boolean;\n declarationDir?: string;\n disableSizeLimit?: boolean;\n emitBOM?: boolean;\n emitDecoratorMetadata?: boolean;\n experimentalDecorators?: boolean;\n forceConsistentCasingInFileNames?: boolean;\n importHelpers?: boolean;\n inlineSourceMap?: boolean;\n inlineSources?: boolean;\n isolatedModules?: boolean;\n jsx?: JsxEmit;\n lib?: string[];\n locale?: string;\n mapRoot?: string;\n maxNodeModuleJsDepth?: number;\n module?: ModuleKind;\n moduleResolution?: ModuleResolutionKind;\n newLine?: NewLineKind;\n noEmit?: boolean;\n noEmitHelpers?: boolean;\n noEmitOnError?: boolean;\n noErrorTruncation?: boolean;\n noFallthroughCasesInSwitch?: boolean;\n noImplicitAny?: boolean;\n noImplicitReturns?: boolean;\n noImplicitThis?: boolean;\n noUnusedLocals?: boolean;\n noUnusedParameters?: boolean;\n noImplicitUseStrict?: boolean;\n noLib?: boolean;\n noResolve?: boolean;\n out?: string;\n outDir?: string;\n outFile?: string;\n preserveConstEnums?: boolean;\n project?: string;\n reactNamespace?: string;\n jsxFactory?: string;\n removeComments?: boolean;\n rootDir?: string;\n rootDirs?: string[];\n skipLibCheck?: boolean;\n skipDefaultLibCheck?: boolean;\n sourceMap?: boolean;\n sourceRoot?: string;\n strictNullChecks?: boolean;\n suppressExcessPropertyErrors?: boolean;\n suppressImplicitAnyIndexErrors?: boolean;\n target?: ScriptTarget;\n traceResolution?: boolean;\n types?: string[];\n /** Paths used to compute primary types search locations */\n typeRoots?: string[];\n [option: string]: CompilerOptionsValue | undefined;\n }\n\n export interface DiagnosticsOptions {\n noSemanticValidation?: boolean;\n noSyntaxValidation?: boolean;\n }\n\n export interface LanguageServiceDefaults {\n /**\n * Add an additional source file to the language service. Use this\n * for typescript (definition) files that won't be loaded as editor\n * document, like `jquery.d.ts`.\n *\n * @param content The file content\n * @param filePath An optional file path\n * @returns A disposabled which will remove the file from the\n * language service upon disposal.\n */\n addExtraLib(content: string, filePath?: string): IDisposable;\n\n /**\n * Set TypeScript compiler options.\n */\n setCompilerOptions(options: CompilerOptions): void;\n\n /**\n * Configure whether syntactic and/or semantic validation should\n * be performed\n */\n setDiagnosticsOptions(options: DiagnosticsOptions): void;\n\n /**\n * Configure when the worker shuts down. By default that is 2mins.\n *\n * @param value The maximun idle time in milliseconds. Values less than one\n * mean never shut down.\n */\n setMaximunWorkerIdleTime(value: number): void;\n\n /**\n * Configure if all existing models should be eagerly sync'd\n * to the worker on start or restart.\n */\n setEagerModelSync(value: boolean): void;\n }\n\n export var typescriptDefaults: LanguageServiceDefaults;\n export var javascriptDefaults: LanguageServiceDefaults;\n\n export var getTypeScriptWorker: () => monaco.Promise;\n export var getJavaScriptWorker: () => monaco.Promise;\n}\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 *--------------------------------------------------------------------------------------------*/\ndeclare module monaco.languages.css {\n export interface DiagnosticsOptions {\n readonly validate?: boolean;\n readonly lint?: {\n readonly compatibleVendorPrefixes?: 'ignore' | 'warning' | 'error',\n readonly vendorPrefix?: 'ignore' | 'warning' | 'error',\n readonly duplicateProperties?: 'ignore' | 'warning' | 'error',\n readonly emptyRules?: 'ignore' | 'warning' | 'error',\n readonly importStatement?: 'ignore' | 'warning' | 'error',\n readonly boxModel?: 'ignore' | 'warning' | 'error',\n readonly universalSelector?: 'ignore' | 'warning' | 'error',\n readonly zeroUnits?: 'ignore' | 'warning' | 'error',\n readonly fontFaceProperties?: 'ignore' | 'warning' | 'error',\n readonly hexColorLength?: 'ignore' | 'warning' | 'error',\n readonly argumentsInColorFunction?: 'ignore' | 'warning' | 'error',\n readonly unknownProperties?: 'ignore' | 'warning' | 'error',\n readonly ieHack?: 'ignore' | 'warning' | 'error',\n readonly unknownVendorSpecificProperties?: 'ignore' | 'warning' | 'error',\n readonly propertyIgnoredDueToDisplay?: 'ignore' | 'warning' | 'error',\n readonly important?: 'ignore' | 'warning' | 'error',\n readonly float?: 'ignore' | 'warning' | 'error',\n readonly idSelector?: 'ignore' | 'warning' | 'error'\n }\n }\n\n export interface LanguageServiceDefaults {\n readonly onDidChange: IEvent;\n readonly diagnosticsOptions: DiagnosticsOptions;\n setDiagnosticsOptions(options: DiagnosticsOptions): void;\n }\n\n export var cssDefaults: LanguageServiceDefaults;\n export var lessDefaults: LanguageServiceDefaults;\n export var scssDefaults: LanguageServiceDefaults;\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\ndeclare module monaco.languages.json {\n export interface DiagnosticsOptions {\n /**\n * If set, the validator will be enabled and perform syntax validation as well as schema based validation.\n */\n readonly validate?: boolean;\n /**\n * If set, comments are tolerated. If set to false, syntax errors will be emmited for comments.\n */\n readonly allowComments?: boolean;\n /**\n * A list of known schemas and/or associations of schemas to file names.\n */\n readonly schemas?: {\n /**\n * The URI of the schema, which is also the identifier of the schema.\n */\n readonly uri: string;\n /**\n * A list of file names that are associated to the schema. The '*' wildcard can be used. For example '*.schema.json', 'package.json'\n */\n readonly fileMatch?: string[];\n /**\n * The schema for the given URI.\n */\n readonly schema?: any;\n }[];\n }\n\n export interface LanguageServiceDefaults {\n readonly onDidChange: IEvent;\n readonly diagnosticsOptions: DiagnosticsOptions;\n setDiagnosticsOptions(options: DiagnosticsOptions): void;\n }\n\n export var jsonDefaults: LanguageServiceDefaults;\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\ndeclare module monaco.languages.html {\n export interface HTMLFormatConfiguration {\n readonly tabSize: number;\n readonly insertSpaces: boolean;\n readonly wrapLineLength: number;\n readonly unformatted: string;\n readonly contentUnformatted: string;\n readonly indentInnerHtml: boolean;\n readonly preserveNewLines: boolean;\n readonly maxPreserveNewLines: number;\n readonly indentHandlebars: boolean;\n readonly endWithNewline: boolean;\n readonly extraLiners: string;\n readonly wrapAttributes: 'auto' | 'force' | 'force-aligned' | 'force-expand-multiline';\n }\n\n export interface CompletionConfiguration {\n [provider: string]: boolean;\n }\n\n export interface Options {\n /**\n * If set, comments are tolerated. If set to false, syntax errors will be emmited for comments.\n */\n readonly format?: HTMLFormatConfiguration;\n /**\n * A list of known schemas and/or associations of schemas to file names.\n */\n readonly suggest?: CompletionConfiguration;\n }\n\n export interface LanguageServiceDefaults {\n readonly onDidChange: IEvent;\n readonly options: Options;\n setOptions(options: Options): void;\n }\n\n export var htmlDefaults: LanguageServiceDefaults;\n export var handlebarDefaults: LanguageServiceDefaults;\n export var razorDefaults: LanguageServiceDefaults;\n}",e),dd("Mocha",'// Type definitions for mocha 2.2.5\n// Project: http://mochajs.org/\n// Definitions by: Kazi Manzur Rashid , otiai10 , jt000 , Vadim Macagon \n// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped\n\ninterface MochaSetupOptions {\n //milliseconds to wait before considering a test slow\n slow?: number;\n\n // timeout in milliseconds\n timeout?: number;\n\n // ui name "bdd", "tdd", "exports" etc\n ui?: string;\n\n //array of accepted globals\n globals?: any[];\n\n // reporter instance (function or string), defaults to `mocha.reporters.Spec`\n reporter?: string | ReporterConstructor;\n\n // bail on the first test failure\n bail?: boolean;\n\n // ignore global leaks\n ignoreLeaks?: boolean;\n\n // grep string or regexp to filter tests with\n grep?: any;\n\n // require modules before running tests\n require?: string[];\n}\n\ndeclare var mocha: Mocha;\ndeclare var describe: Mocha.IContextDefinition;\ndeclare var xdescribe: Mocha.IContextDefinition;\n// alias for `describe`\ndeclare var context: Mocha.IContextDefinition;\n// alias for `describe`\ndeclare var suite: Mocha.IContextDefinition;\ndeclare var it: Mocha.ITestDefinition;\ndeclare var xit: Mocha.ITestDefinition;\n// alias for `it`\ndeclare var test: Mocha.ITestDefinition;\ndeclare var specify: Mocha.ITestDefinition;\n\n// Used with the --delay flag; see https://mochajs.org/#hooks\ndeclare function run(): void;\n\ninterface MochaDone {\n (error?: any): any;\n}\n\ndeclare function setup(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;\ndeclare function teardown(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;\ndeclare function suiteSetup(callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;\ndeclare function suiteTeardown(callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;\ndeclare function before(callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;\ndeclare function before(description: string, callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;\ndeclare function after(callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;\ndeclare function after(description: string, callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;\ndeclare function beforeEach(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;\ndeclare function beforeEach(description: string, callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;\ndeclare function afterEach(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;\ndeclare function afterEach(description: string, callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;\n\ninterface ReporterConstructor {\n new(runner: Mocha.IRunner, options: any): any;\n}\n\ndeclare class Mocha {\n currentTest: Mocha.ITestDefinition;\n constructor(options?: {\n grep?: RegExp;\n ui?: string;\n reporter?: string | ReporterConstructor;\n timeout?: number;\n reporterOptions?: any;\n slow?: number;\n bail?: boolean;\n });\n\n /** Setup mocha with the given options. */\n setup(options: MochaSetupOptions): Mocha;\n bail(value?: boolean): Mocha;\n addFile(file: string): Mocha;\n /** Sets reporter by name, defaults to "spec". */\n reporter(name: string, reporterOptions?: any): Mocha;\n /** Sets reporter constructor, defaults to mocha.reporters.Spec. */\n reporter(reporter: ReporterConstructor, reporterOptions?: any): Mocha;\n ui(value: string): Mocha;\n grep(value: string): Mocha;\n grep(value: RegExp): Mocha;\n invert(): Mocha;\n ignoreLeaks(value: boolean): Mocha;\n checkLeaks(): Mocha;\n /**\n * Function to allow assertion libraries to throw errors directly into mocha.\n * This is useful when running tests in a browser because window.onerror will\n * only receive the \'message\' attribute of the Error.\n */\n throwError(error: Error): void;\n /** Enables growl support. */\n growl(): Mocha;\n globals(value: string): Mocha;\n globals(values: string[]): Mocha;\n useColors(value: boolean): Mocha;\n useInlineDiffs(value: boolean): Mocha;\n timeout(value: number): Mocha;\n slow(value: number): Mocha;\n enableTimeouts(value: boolean): Mocha;\n asyncOnly(value: boolean): Mocha;\n noHighlighting(value: boolean): Mocha;\n /** Runs tests and invokes `onComplete()` when finished. */\n run(onComplete?: (failures: number) => void): Mocha.IRunner;\n}\n\n// merge the Mocha class declaration with a module\ndeclare namespace Mocha {\n interface ISuiteCallbackContext {\n timeout(ms: number | string): this;\n retries(n: number): this;\n slow(ms: number): this;\n }\n\n interface IHookCallbackContext {\n skip(): this;\n timeout(ms: number | string): this;\n [index: string]: any;\n }\n\n\n interface ITestCallbackContext {\n skip(): this;\n timeout(ms: number | string): this;\n retries(n: number): this;\n slow(ms: number): this;\n [index: string]: any;\n }\n\n /** Partial interface for Mocha\'s `Runnable` class. */\n interface IRunnable {\n title: string;\n fn: Function;\n async: boolean;\n sync: boolean;\n timedOut: boolean;\n timeout(n: number | string): this;\n duration?: number;\n }\n\n /** Partial interface for Mocha\'s `Suite` class. */\n interface ISuite {\n parent: ISuite;\n title: string;\n\n fullTitle(): string;\n }\n\n /** Partial interface for Mocha\'s `Test` class. */\n interface ITest extends IRunnable {\n parent: ISuite;\n pending: boolean;\n state: \'failed\' | \'passed\' | undefined;\n\n fullTitle(): string;\n }\n\n interface IBeforeAndAfterContext extends IHookCallbackContext {\n currentTest: ITest;\n }\n\n interface IStats {\n suites: number;\n tests: number;\n passes: number;\n pending: number;\n failures: number;\n start?: Date;\n end?: Date;\n duration?: Date;\n }\n\n /** Partial interface for Mocha\'s `Runner` class. */\n interface IRunner {\n stats?: IStats;\n started: boolean;\n suite: ISuite;\n total: number;\n failures: number;\n grep: (re: string, invert: boolean) => this;\n grepTotal: (suite: ISuite) => number;\n globals: (arr: ReadonlyArray) => this | string[];\n abort: () => this;\n run: (fn?: (failures: number) => void) => this;\n }\n\n interface IContextDefinition {\n (description: string, callback: (this: ISuiteCallbackContext) => void): ISuite;\n only(description: string, callback: (this: ISuiteCallbackContext) => void): ISuite;\n skip(description: string, callback: (this: ISuiteCallbackContext) => void): void;\n timeout(ms: number | string): void;\n }\n\n interface ITestDefinition {\n (expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest;\n only(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest;\n skip(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): void;\n timeout(ms: number | string): void;\n state: "failed" | "passed";\n }\n\n export module reporters {\n export class Base {\n stats: IStats;\n\n constructor(runner: IRunner);\n }\n\n export class Doc extends Base { }\n export class Dot extends Base { }\n export class HTML extends Base { }\n export class HTMLCov extends Base { }\n export class JSON extends Base { }\n export class JSONCov extends Base { }\n export class JSONStream extends Base { }\n export class Landing extends Base { }\n export class List extends Base { }\n export class Markdown extends Base { }\n export class Min extends Base { }\n export class Nyan extends Base { }\n export class Progress extends Base {\n /**\n * @param options.open String used to indicate the start of the progress bar.\n * @param options.complete String used to indicate a complete test on the progress bar.\n * @param options.incomplete String used to indicate an incomplete test on the progress bar.\n * @param options.close String used to indicate the end of the progress bar.\n */\n constructor(runner: IRunner, options?: {\n open?: string;\n complete?: string;\n incomplete?: string;\n close?: string;\n });\n }\n export class Spec extends Base { }\n export class TAP extends Base { }\n export class XUnit extends Base {\n constructor(runner: IRunner, options?: any);\n }\n }\n}\n\ndeclare module "mocha" {\n export = Mocha;\n}\n',e),dd("chai",'// Type definitions for chai 4.1\n// Project: http://chaijs.com/\n// Definitions by: Jed Mao ,\n// Bart van der Schoor ,\n// Andrew Brown ,\n// Olivier Chevet ,\n// Matt Wistrand ,\n// Josh Goldberg \n// Shaun Luttin \n// Gintautas Miselis \n// Satana Charuwichitratana \n// Erik Schierboom \n// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped\n\ndeclare namespace Chai {\n interface ChaiStatic {\n expect: ExpectStatic;\n should(): Should;\n /**\n * Provides a way to extend the internals of Chai\n */\n use(fn: (chai: any, utils: any) => void): ChaiStatic;\n assert: AssertStatic;\n config: Config;\n AssertionError: typeof AssertionError;\n version: string;\n }\n\n export interface ExpectStatic extends AssertionStatic {\n fail(actual?: any, expected?: any, message?: string, operator?: Operator): void;\n }\n\n export interface AssertStatic extends Assert {\n }\n\n export interface AssertionStatic {\n (target: any, message?: string): Assertion;\n }\n\n export type Operator = string; // "==" | "===" | ">" | ">=" | "<" | "<=" | "!=" | "!==";\n\n export type OperatorComparable = boolean | null | number | string | undefined | Date;\n\n interface ShouldAssertion {\n equal(value1: any, value2: any, message?: string): void;\n Throw: ShouldThrow;\n throw: ShouldThrow;\n exist(value: any, message?: string): void;\n }\n\n interface Should extends ShouldAssertion {\n not: ShouldAssertion;\n fail(actual: any, expected: any, message?: string, operator?: Operator): void;\n }\n\n interface ShouldThrow {\n (actual: Function, expected?: string|RegExp, message?: string): void;\n (actual: Function, constructor: Error|Function, expected?: string|RegExp, message?: string): void;\n }\n\n interface Assertion extends LanguageChains, NumericComparison, TypeComparison {\n not: Assertion;\n deep: Deep;\n ordered: Ordered;\n nested: Nested;\n any: KeyFilter;\n all: KeyFilter;\n a: TypeComparison;\n an: TypeComparison;\n include: Include;\n includes: Include;\n contain: Include;\n contains: Include;\n ok: Assertion;\n true: Assertion;\n false: Assertion;\n null: Assertion;\n undefined: Assertion;\n NaN: Assertion;\n exist: Assertion;\n empty: Assertion;\n arguments: Assertion;\n Arguments: Assertion;\n equal: Equal;\n equals: Equal;\n eq: Equal;\n eql: Equal;\n eqls: Equal;\n property: Property;\n ownProperty: OwnProperty;\n haveOwnProperty: OwnProperty;\n ownPropertyDescriptor: OwnPropertyDescriptor;\n haveOwnPropertyDescriptor: OwnPropertyDescriptor;\n length: Length;\n lengthOf: Length;\n match: Match;\n matches: Match;\n string(string: string, message?: string): Assertion;\n keys: Keys;\n key(string: string): Assertion;\n throw: Throw;\n throws: Throw;\n Throw: Throw;\n respondTo: RespondTo;\n respondsTo: RespondTo;\n itself: Assertion;\n satisfy: Satisfy;\n satisfies: Satisfy;\n closeTo: CloseTo;\n approximately: CloseTo;\n members: Members;\n increase: PropertyChange;\n increases: PropertyChange;\n decrease: PropertyChange;\n decreases: PropertyChange;\n change: PropertyChange;\n changes: PropertyChange;\n extensible: Assertion;\n sealed: Assertion;\n frozen: Assertion;\n oneOf(list: any[], message?: string): Assertion;\n }\n\n interface LanguageChains {\n to: Assertion;\n be: Assertion;\n been: Assertion;\n is: Assertion;\n that: Assertion;\n which: Assertion;\n and: Assertion;\n has: Assertion;\n have: Assertion;\n with: Assertion;\n at: Assertion;\n of: Assertion;\n same: Assertion;\n but: Assertion;\n does: Assertion;\n }\n\n interface NumericComparison {\n above: NumberComparer;\n gt: NumberComparer;\n greaterThan: NumberComparer;\n least: NumberComparer;\n gte: NumberComparer;\n below: NumberComparer;\n lt: NumberComparer;\n lessThan: NumberComparer;\n most: NumberComparer;\n lte: NumberComparer;\n within(start: number, finish: number, message?: string): Assertion;\n within(start: Date, finish: Date, message?: string): Assertion;\n }\n\n interface NumberComparer {\n (value: number | Date, message?: string): Assertion;\n }\n\n interface TypeComparison {\n (type: string, message?: string): Assertion;\n instanceof: InstanceOf;\n instanceOf: InstanceOf;\n }\n\n interface InstanceOf {\n (constructor: Object, message?: string): Assertion;\n }\n\n interface CloseTo {\n (expected: number, delta: number, message?: string): Assertion;\n }\n\n interface Nested {\n include: Include;\n property: Property;\n members: Members;\n }\n\n interface Deep {\n equal: Equal;\n equals: Equal;\n eq: Equal;\n include: Include;\n property: Property;\n members: Members;\n ordered: Ordered;\n }\n\n interface Ordered {\n members: Members;\n }\n\n interface KeyFilter {\n keys: Keys;\n }\n\n interface Equal {\n (value: any, message?: string): Assertion;\n }\n\n interface Property {\n (name: string, value?: any, message?: string): Assertion;\n }\n\n interface OwnProperty {\n (name: string, message?: string): Assertion;\n }\n\n interface OwnPropertyDescriptor {\n (name: string, descriptor: PropertyDescriptor, message?: string): Assertion;\n (name: string, message?: string): Assertion;\n }\n\n interface Length extends LanguageChains, NumericComparison {\n (length: number, message?: string): Assertion;\n }\n\n interface Include {\n (value: Object | string | number, message?: string): Assertion;\n keys: Keys;\n deep: Deep;\n ordered: Ordered;\n members: Members;\n any: KeyFilter;\n all: KeyFilter;\n }\n\n interface Match {\n (regexp: RegExp, message?: string): Assertion;\n }\n\n interface Keys {\n (...keys: string[]): Assertion;\n (keys: any[]|Object): Assertion;\n }\n\n interface Throw {\n (expected?: string|RegExp, message?: string): Assertion;\n (constructor: Error|Function, expected?: string|RegExp, message?: string): Assertion;\n }\n\n interface RespondTo {\n (method: string, message?: string): Assertion;\n }\n\n interface Satisfy {\n (matcher: Function, message?: string): Assertion;\n }\n\n interface Members {\n (set: any[], message?: string): Assertion;\n }\n\n interface PropertyChange {\n (object: Object, property: string, message?: string): Assertion;\n }\n\n export interface Assert {\n /**\n * @param expression Expression to test for truthiness.\n * @param message Message to display on error.\n */\n (expression: any, message?: string): void;\n\n /**\n * Throws a failure.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n * @param operator Comparison operator, if not strict equality.\n * @remarks Node.js assert module-compatible.\n */\n fail(actual?: T, expected?: T, message?: string, operator?: Operator): void;\n\n /**\n * Asserts that object is truthy.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param message Message to display on error.\n */\n isOk(value: T, message?: string): void;\n\n /**\n * Asserts that object is truthy.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param message Message to display on error.\n */\n ok(value: T, message?: string): void;\n\n /**\n * Asserts that object is falsy.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param message Message to display on error.\n */\n isNotOk(value: T, message?: string): void;\n\n /**\n * Asserts that object is falsy.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param message Message to display on error.\n */\n notOk(value: T, message?: string): void;\n\n /**\n * Asserts non-strict equality (==) of actual and expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n equal(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts non-strict inequality (==) of actual and expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n notEqual(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts strict equality (===) of actual and expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n strictEqual(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts strict inequality (==) of actual and expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n notStrictEqual(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts that actual is deeply equal (==) to expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n deepEqual(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts that actual is not deeply equal (==) to expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n notDeepEqual(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts that actual is deeply strict equal (===) to expected.\n *\n * @type T Type of the objects.\n * @param actual Actual value.\n * @param expected Potential expected value.\n * @param message Message to display on error.\n */\n deepStrictEqual(actual: T, expected: T, message?: string): void;\n\n /**\n * Asserts valueToCheck is strictly greater than (>) valueToBeAbove.\n *\n * @param valueToCheck Actual value.\n * @param valueToBeAbove Minimum Potential expected value.\n * @param message Message to display on error.\n */\n isAbove(valueToCheck: number, valueToBeAbove: number, message?: string): void;\n\n /**\n * Asserts valueToCheck is greater than or equal to (>=) valueToBeAtLeast.\n *\n * @param valueToCheck Actual value.\n * @param valueToBeAtLeast Minimum Potential expected value.\n * @param message Message to display on error.\n */\n isAtLeast(valueToCheck: number, valueToBeAtLeast: number, message?: string): void;\n\n /**\n * Asserts valueToCheck is strictly less than (<) valueToBeBelow.\n *\n * @param valueToCheck Actual value.\n * @param valueToBeBelow Minimum Potential expected value.\n * @param message Message to display on error.\n */\n isBelow(valueToCheck: number, valueToBeBelow: number, message?: string): void;\n\n /**\n * Asserts valueToCheck is greater than or equal to (>=) valueToBeAtMost.\n *\n * @param valueToCheck Actual value.\n * @param valueToBeAtMost Minimum Potential expected value.\n * @param message Message to display on error.\n */\n isAtMost(valueToCheck: number, valueToBeAtMost: number, message?: string): void;\n\n /**\n * Asserts that value is true.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isTrue(value: T, message?: string): void;\n\n /**\n * Asserts that value is false.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isFalse(value: T, message?: string): void;\n\n /**\n * Asserts that value is not true.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotTrue(value: T, message?: string): void;\n\n /**\n * Asserts that value is not false.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotFalse(value: T, message?: string): void;\n\n /**\n * Asserts that value is null.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNull(value: T, message?: string): void;\n\n /**\n * Asserts that value is not null.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotNull(value: T, message?: string): void;\n\n /**\n * Asserts that value is not null.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNaN(value: T, message?: string): void;\n\n /**\n * Asserts that value is not null.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotNaN(value: T, message?: string): void;\n\n /**\n * Asserts that the target is neither null nor undefined.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n exists(value: T, message?: string): void;\n\n /**\n * Asserts that the target is either null or undefined.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n notExists(value: T, message?: string): void;\n\n /**\n * Asserts that value is undefined.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isUndefined(value: T, message?: string): void;\n\n /**\n * Asserts that value is not undefined.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isDefined(value: T, message?: string): void;\n\n /**\n * Asserts that value is a function.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isFunction(value: T, message?: string): void;\n\n /**\n * Asserts that value is not a function.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotFunction(value: T, message?: string): void;\n\n /**\n * Asserts that value is an object of type \'Object\'\n * (as revealed by Object.prototype.toString).\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n * @remarks The assertion does not match subclassed objects.\n */\n isObject(value: T, message?: string): void;\n\n /**\n * Asserts that value is not an object of type \'Object\'\n * (as revealed by Object.prototype.toString).\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotObject(value: T, message?: string): void;\n\n /**\n * Asserts that value is an array.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isArray(value: T, message?: string): void;\n\n /**\n * Asserts that value is not an array.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotArray(value: T, message?: string): void;\n\n /**\n * Asserts that value is a string.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isString(value: T, message?: string): void;\n\n /**\n * Asserts that value is not a string.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotString(value: T, message?: string): void;\n\n /**\n * Asserts that value is a number.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNumber(value: T, message?: string): void;\n\n /**\n * Asserts that value is not a number.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotNumber(value: T, message?: string): void;\n\n /**\n * Asserts that value is a boolean.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isBoolean(value: T, message?: string): void;\n\n /**\n * Asserts that value is not a boolean.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param message Message to display on error.\n */\n isNotBoolean(value: T, message?: string): void;\n\n /**\n * Asserts that value\'s type is name, as determined by Object.prototype.toString.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param name Potential expected type name of value.\n * @param message Message to display on error.\n */\n typeOf(value: T, name: string, message?: string): void;\n\n /**\n * Asserts that value\'s type is not name, as determined by Object.prototype.toString.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param name Potential expected type name of value.\n * @param message Message to display on error.\n */\n notTypeOf(value: T, name: string, message?: string): void;\n\n /**\n * Asserts that value is an instance of constructor.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param constructor Potential expected contructor of value.\n * @param message Message to display on error.\n */\n instanceOf(value: T, constructor: Function, message?: string): void;\n\n /**\n * Asserts that value is not an instance of constructor.\n *\n * @type T Type of value.\n * @param value Actual value.\n * @param constructor Potential expected contructor of value.\n * @param message Message to display on error.\n */\n notInstanceOf(value: T, type: Function, message?: string): void;\n\n /**\n * Asserts that haystack includes needle.\n *\n * @param haystack Container string.\n * @param needle Potential expected substring of haystack.\n * @param message Message to display on error.\n */\n include(haystack: string, needle: string, message?: string): void;\n\n /**\n * Asserts that haystack includes needle.\n *\n * @type T Type of values in haystack.\n * @param haystack Container array.\n * @param needle Potential value contained in haystack.\n * @param message Message to display on error.\n */\n include(haystack: T[], needle: T, message?: string): void;\n\n /**\n * Asserts that haystack does not include needle.\n *\n * @param haystack Container string or array.\n * @param needle Potential expected substring of haystack.\n * @param message Message to display on error.\n */\n notInclude(haystack: string | any[], needle: any, message?: string): void;\n\n /**\n * Asserts that haystack includes needle. Can be used to assert the inclusion of a value in an array or a subset of properties in an object. Deep equality is used.\n *\n * @param haystack Container string.\n * @param needle Potential expected substring of haystack.\n * @param message Message to display on error.\n */\n deepInclude(haystack: string, needle: string, message?: string): void;\n\n /**\n * Asserts that haystack includes needle. Can be used to assert the inclusion of a value in an array or a subset of properties in an object. Deep equality is used.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n deepInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that haystack does not include needle. Can be used to assert the absence of a value in an array or a subset of properties in an object. Deep equality is used.\n *\n * @param haystack Container string or array.\n * @param needle Potential expected substring of haystack.\n * @param message Message to display on error.\n */\n notDeepInclude(haystack: string | any[], needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the inclusion of a subset of properties in an object.\n *\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.Asserts that ‘haystack’ includes ‘needle’.\n * Can be used to assert the inclusion of a subset of properties in an object.\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n nestedInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ does not include ‘needle’. Can be used to assert the absence of a subset of properties in an object.\n *\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.Asserts that ‘haystack’ includes ‘needle’.\n * Can be used to assert the inclusion of a subset of properties in an object.\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n notNestedInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the inclusion of a subset of properties in an object while checking for deep equality\n *\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.Asserts that ‘haystack’ includes ‘needle’.\n * Can be used to assert the inclusion of a subset of properties in an object.\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n deepNestedInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ does not include ‘needle’. Can be used to assert the absence of a subset of properties in an object while checking for deep equality.\n *\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.Asserts that ‘haystack’ includes ‘needle’.\n * Can be used to assert the inclusion of a subset of properties in an object.\n * Enables the use of dot- and bracket-notation for referencing nested properties.\n * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n notDeepNestedInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the inclusion of a subset of properties in an object while ignoring inherited properties.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n ownInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the absence of a subset of properties in an object while ignoring inherited properties.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n notOwnInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the inclusion of a subset of properties in an object while ignoring inherited properties and checking for deep\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n deepOwnInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the absence of a subset of properties in an object while ignoring inherited properties and checking for deep equality.\n *\n * @param haystack\n * @param needle\n * @param message Message to display on error.\n */\n notDeepOwnInclude(haystack: any, needle: any, message?: string): void;\n\n /**\n * Asserts that value matches the regular expression regexp.\n *\n * @param value Actual value.\n * @param regexp Potential match of value.\n * @param message Message to display on error.\n */\n match(value: string, regexp: RegExp, message?: string): void;\n\n /**\n * Asserts that value does not match the regular expression regexp.\n *\n * @param value Actual value.\n * @param regexp Potential match of value.\n * @param message Message to display on error.\n */\n notMatch(expected: any, regexp: RegExp, message?: string): void;\n\n /**\n * Asserts that object has a property named by property.\n *\n * @type T Type of object.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param message Message to display on error.\n */\n property(object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that object has a property named by property.\n *\n * @type T Type of object.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param message Message to display on error.\n */\n notProperty(object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that object has a property named by property, which can be a string\n * using dot- and bracket-notation for deep reference.\n *\n * @type T Type of object.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param message Message to display on error.\n */\n deepProperty(object: T, property: string, message?: string): void;\n\n /**\n * Asserts that object does not have a property named by property, which can be a\n * string using dot- and bracket-notation for deep reference.\n *\n * @type T Type of object.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param message Message to display on error.\n */\n notDeepProperty(object: T, property: string, message?: string): void;\n\n /**\n * Asserts that object has a property named by property with value given by value.\n *\n * @type T Type of object.\n * @type V Type of value.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param value Potential expected property value.\n * @param message Message to display on error.\n */\n propertyVal(object: T, property: string /* keyof T */, value: V, message?: string): void;\n\n /**\n * Asserts that object has a property named by property with value given by value.\n *\n * @type T Type of object.\n * @type V Type of value.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param value Potential expected property value.\n * @param message Message to display on error.\n */\n propertyNotVal(object: T, property: string /* keyof T */, value: V, message?: string): void;\n\n /**\n * Asserts that object has a property named by property, which can be a string\n * using dot- and bracket-notation for deep reference.\n *\n * @type T Type of object.\n * @type V Type of value.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param value Potential expected property value.\n * @param message Message to display on error.\n */\n deepPropertyVal(object: T, property: string, value: V, message?: string): void;\n\n /**\n * Asserts that object does not have a property named by property, which can be a\n * string using dot- and bracket-notation for deep reference.\n *\n * @type T Type of object.\n * @type V Type of value.\n * @param object Container object.\n * @param property Potential contained property of object.\n * @param value Potential expected property value.\n * @param message Message to display on error.\n */\n deepPropertyNotVal(object: T, property: string, value: V, message?: string): void;\n\n /**\n * Asserts that object has a length property with the expected value.\n *\n * @type T Type of object.\n * @param object Container object.\n * @param length Potential expected length of object.\n * @param message Message to display on error.\n */\n lengthOf(object: T, length: number, message?: string): void;\n\n /**\n * Asserts that fn will throw an error.\n *\n * @param fn Function that may throw.\n * @param message Message to display on error.\n */\n throw(fn: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param regExp Potential expected message match.\n * @param message Message to display on error.\n */\n throw(fn: Function, regExp: RegExp): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n throw(fn: Function, constructor: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor\n * and an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n throw(fn: Function, constructor: Function, regExp: RegExp): void;\n\n /**\n * Asserts that fn will throw an error.\n *\n * @param fn Function that may throw.\n * @param message Message to display on error.\n */\n throws(fn: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param errType Potential expected message match or error constructor.\n * @param message Message to display on error.\n */\n throws(fn: Function, errType: RegExp|Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor\n * and an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n throws(fn: Function, errType: Function, regExp: RegExp): void;\n\n /**\n * Asserts that fn will throw an error.\n *\n * @param fn Function that may throw.\n * @param message Message to display on error.\n */\n Throw(fn: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param regExp Potential expected message match.\n * @param message Message to display on error.\n */\n Throw(fn: Function, regExp: RegExp): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n Throw(fn: Function, errType: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor\n * and an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n Throw(fn: Function, errType: Function, regExp: RegExp): void;\n\n /**\n * Asserts that fn will not throw an error.\n *\n * @param fn Function that may throw.\n * @param message Message to display on error.\n */\n doesNotThrow(fn: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param regExp Potential expected message match.\n * @param message Message to display on error.\n */\n doesNotThrow(fn: Function, regExp: RegExp): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n doesNotThrow(fn: Function, errType: Function, message?: string): void;\n\n /**\n * Asserts that function will throw an error that is an instance of constructor\n * and an error with message matching regexp.\n *\n * @param fn Function that may throw.\n * @param constructor Potential expected error constructor.\n * @param message Message to display on error.\n */\n doesNotThrow(fn: Function, errType: Function, regExp: RegExp): void;\n\n /**\n * Compares two values using operator.\n *\n * @param val1 Left value during comparison.\n * @param operator Comparison operator.\n * @param val2 Right value during comparison.\n * @param message Message to display on error.\n */\n operator(val1: OperatorComparable, operator: Operator, val2: OperatorComparable, message?: string): void;\n\n /**\n * Asserts that the target is equal to expected, to within a +/- delta range.\n *\n * @param actual Actual value\n * @param expected Potential expected value.\n * @param delta Maximum differenced between values.\n * @param message Message to display on error.\n */\n closeTo(actual: number, expected: number, delta: number, message?: string): void;\n\n /**\n * Asserts that the target is equal to expected, to within a +/- delta range.\n *\n * @param actual Actual value\n * @param expected Potential expected value.\n * @param delta Maximum differenced between values.\n * @param message Message to display on error.\n */\n approximately(act: number, exp: number, delta: number, message?: string): void;\n\n /**\n * Asserts that set1 and set2 have the same members. Order is not take into account.\n *\n * @type T Type of set values.\n * @param set1 Actual set of values.\n * @param set2 Potential expected set of values.\n * @param message Message to display on error.\n */\n sameMembers(set1: T[], set2: T[], message?: string): void;\n\n /**\n * Asserts that set1 and set2 have the same members using deep equality checking.\n * Order is not take into account.\n *\n * @type T Type of set values.\n * @param set1 Actual set of values.\n * @param set2 Potential expected set of values.\n * @param message Message to display on error.\n */\n sameDeepMembers(set1: T[], set2: T[], message?: string): void;\n\n /**\n * Asserts that set1 and set2 have the same members in the same order.\n * Uses a strict equality check (===).\n *\n * @type T Type of set values.\n * @param set1 Actual set of values.\n * @param set2 Potential expected set of values.\n * @param message Message to display on error.\n */\n sameOrderedMembers(set1: T[], set2: T[], message?: string): void;\n\n /**\n * Asserts that set1 and set2 don’t have the same members in the same order.\n * Uses a strict equality check (===).\n *\n * @type T Type of set values.\n * @param set1 Actual set of values.\n * @param set2 Potential expected set of values.\n * @param message Message to display on error.\n */\n notSameOrderedMembers(set1: T[], set2: T[], message?: string): void;\n\n /**\n * Asserts that set1 and set2 have the same members in the same order.\n * Uses a deep equality check.\n *\n * @type T Type of set values.\n * @param set1 Actual set of values.\n * @param set2 Potential expected set of values.\n * @param message Message to display on error.\n */\n sameDeepOrderedMembers(set1: T[], set2: T[], message?: string): void;\n\n /**\n * Asserts that set1 and set2 don’t have the same members in the same order.\n * Uses a deep equality check.\n *\n * @type T Type of set values.\n * @param set1 Actual set of values.\n * @param set2 Potential expected set of values.\n * @param message Message to display on error.\n */\n notSameDeepOrderedMembers(set1: T[], set2: T[], message?: string): void;\n\n /**\n * Asserts that subset is included in superset in the same order beginning with the first element in superset.\n * Uses a strict equality check (===).\n *\n * @type T Type of set values.\n * @param superset Actual set of values.\n * @param subset Potential contained set of values.\n * @param message Message to display on error.\n */\n includeOrderedMembers(superset: T[], subset: T[], message?: string): void;\n\n /**\n * Asserts that subset isn’t included in superset in the same order beginning with the first element in superset.\n * Uses a strict equality check (===).\n *\n * @type T Type of set values.\n * @param superset Actual set of values.\n * @param subset Potential contained set of values.\n * @param message Message to display on error.\n */\n notIncludeOrderedMembers(superset: T[], subset: T[], message?: string): void;\n\n /**\n * Asserts that subset is included in superset in the same order beginning with the first element in superset.\n * Uses a deep equality check.\n *\n * @type T Type of set values.\n * @param superset Actual set of values.\n * @param subset Potential contained set of values.\n * @param message Message to display on error.\n */\n includeDeepOrderedMembers(superset: T[], subset: T[], message?: string): void;\n\n /**\n * Asserts that subset isn’t included in superset in the same order beginning with the first element in superset.\n * Uses a deep equality check.\n *\n * @type T Type of set values.\n * @param superset Actual set of values.\n * @param subset Potential contained set of values.\n * @param message Message to display on error.\n */\n notIncludeDeepOrderedMembers(superset: T[], subset: T[], message?: string): void;\n\n /**\n * Asserts that subset is included in superset. Order is not take into account.\n *\n * @type T Type of set values.\n * @param superset Actual set of values.\n * @param subset Potential contained set of values.\n * @param message Message to display on error.\n */\n includeMembers(superset: T[], subset: T[], message?: string): void;\n\n /**\n * Asserts that subset is included in superset using deep equality checking.\n * Order is not take into account.\n *\n * @type T Type of set values.\n * @param superset Actual set of values.\n * @param subset Potential contained set of values.\n * @param message Message to display on error.\n */\n includeDeepMembers(superset: T[], subset: T[], message?: string): void;\n\n /**\n * Asserts that non-object, non-array value inList appears in the flat array list.\n *\n * @type T Type of list values.\n * @param inList Value expected to be in the list.\n * @param list List of values.\n * @param message Message to display on error.\n */\n oneOf(inList: T, list: T[], message?: string): void;\n\n /**\n * Asserts that a function changes the value of a property.\n *\n * @type T Type of object.\n * @param modifier Function to run.\n * @param object Container object.\n * @param property Property of object expected to be modified.\n * @param message Message to display on error.\n */\n changes(modifier: Function, object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that a function does not change the value of a property.\n *\n * @type T Type of object.\n * @param modifier Function to run.\n * @param object Container object.\n * @param property Property of object expected not to be modified.\n * @param message Message to display on error.\n */\n doesNotChange(modifier: Function, object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that a function increases an object property.\n *\n * @type T Type of object.\n * @param modifier Function to run.\n * @param object Container object.\n * @param property Property of object expected to be increased.\n * @param message Message to display on error.\n */\n increases(modifier: Function, object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that a function does not increase an object property.\n *\n * @type T Type of object.\n * @param modifier Function to run.\n * @param object Container object.\n * @param property Property of object expected not to be increased.\n * @param message Message to display on error.\n */\n doesNotIncrease(modifier: Function, object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that a function decreases an object property.\n *\n * @type T Type of object.\n * @param modifier Function to run.\n * @param object Container object.\n * @param property Property of object expected to be decreased.\n * @param message Message to display on error.\n */\n decreases(modifier: Function, object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts that a function does not decrease an object property.\n *\n * @type T Type of object.\n * @param modifier Function to run.\n * @param object Container object.\n * @param property Property of object expected not to be decreased.\n * @param message Message to display on error.\n */\n doesNotDecrease(modifier: Function, object: T, property: string /* keyof T */, message?: string): void;\n\n /**\n * Asserts if value is not a false value, and throws if it is a true value.\n *\n * @type T Type of object.\n * @param object Actual value.\n * @param message Message to display on error.\n * @remarks This is added to allow for chai to be a drop-in replacement for\n * Node’s assert class.\n */\n ifError(object: T, message?: string): void;\n\n /**\n * Asserts that object is extensible (can have new properties added to it).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isExtensible(object: T, message?: string): void;\n\n /**\n * Asserts that object is extensible (can have new properties added to it).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n extensible(object: T, message?: string): void;\n\n /**\n * Asserts that object is not extensible.\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isNotExtensible(object: T, message?: string): void;\n\n /**\n * Asserts that object is not extensible.\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n notExtensible(object: T, message?: string): void;\n\n /**\n * Asserts that object is sealed (can have new properties added to it\n * and its existing properties cannot be removed).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isSealed(object: T, message?: string): void;\n\n /**\n * Asserts that object is sealed (can have new properties added to it\n * and its existing properties cannot be removed).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n sealed(object: T, message?: string): void;\n\n /**\n * Asserts that object is not sealed.\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isNotSealed(object: T, message?: string): void;\n\n /**\n * Asserts that object is not sealed.\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n notSealed(object: T, message?: string): void;\n\n /**\n * Asserts that object is frozen (cannot have new properties added to it\n * and its existing properties cannot be removed).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isFrozen(object: T, message?: string): void;\n\n /**\n * Asserts that object is frozen (cannot have new properties added to it\n * and its existing properties cannot be removed).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n frozen(object: T, message?: string): void;\n\n /**\n * Asserts that object is not frozen (cannot have new properties added to it\n * and its existing properties cannot be removed).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isNotFrozen(object: T, message?: string): void;\n\n /**\n * Asserts that object is not frozen (cannot have new properties added to it\n * and its existing properties cannot be removed).\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n notFrozen(object: T, message?: string): void;\n\n /**\n * Asserts that the target does not contain any values. For arrays and\n * strings, it checks the length property. For Map and Set instances, it\n * checks the size property. For non-function objects, it gets the count\n * of own enumerable string keys.\n *\n * @type T Type of object\n * @param object Actual value.\n * @param message Message to display on error.\n */\n isEmpty(object: T, message?: string): void;\n\n /**\n * Asserts that the target contains values. For arrays and strings, it checks\n * the length property. For Map and Set instances, it checks the size property.\n * For non-function objects, it gets the count of own enumerable string keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param message Message to display on error.\n */\n isNotEmpty(object: T, message?: string): void;\n\n /**\n * Asserts that `object` has at least one of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n hasAnyKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` has all and only all of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n hasAllKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` has all of the `keys` provided but may have more keys not listed.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n containsAllKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` has none of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n doesNotHaveAnyKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` does not have at least one of the `keys` provided.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n doesNotHaveAllKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` has at least one of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n hasAnyDeepKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` has all and only all of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n hasAllDeepKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` contains all of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n containsAllDeepKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` contains all of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n doesNotHaveAnyDeepKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that `object` contains all of the `keys` provided.\n * Since Sets and Maps can have objects as keys you can use this assertion to perform\n * a deep comparison.\n * You can also provide a single object instead of a `keys` array and its keys\n * will be used as the expected set of keys.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param keys Keys to check\n * @param message Message to display on error.\n */\n doesNotHaveAllDeepKeys(object: T, keys: Array | { [key: string]: any }, message?: string): void;\n\n /**\n * Asserts that object has a direct or inherited property named by property,\n * which can be a string using dot- and bracket-notation for nested reference.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param property Property to test.\n * @param message Message to display on error.\n */\n nestedProperty(object: T, property: string, message?: string): void;\n\n /**\n * Asserts that object does not have a property named by property,\n * which can be a string using dot- and bracket-notation for nested reference.\n * The property cannot exist on the object nor anywhere in its prototype chain.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param property Property to test.\n * @param message Message to display on error.\n */\n notNestedProperty(object: T, property: string, message?: string): void;\n\n /**\n * Asserts that object has a property named by property with value given by value.\n * property can use dot- and bracket-notation for nested reference. Uses a strict equality check (===).\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param property Property to test.\n * @param value Value to test.\n * @param message Message to display on error.\n */\n nestedPropertyVal(object: T, property: string, value: any, message?: string): void;\n\n /**\n * Asserts that object does not have a property named by property with value given by value.\n * property can use dot- and bracket-notation for nested reference. Uses a strict equality check (===).\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param property Property to test.\n * @param value Value to test.\n * @param message Message to display on error.\n */\n notNestedPropertyVal(object: T, property: string, value: any, message?: string): void;\n\n /**\n * Asserts that object has a property named by property with a value given by value.\n * property can use dot- and bracket-notation for nested reference. Uses a deep equality check.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param property Property to test.\n * @param value Value to test.\n * @param message Message to display on error.\n */\n deepNestedPropertyVal(object: T, property: string, value: any, message?: string): void;\n\n /**\n * Asserts that object does not have a property named by property with value given by value.\n * property can use dot- and bracket-notation for nested reference. Uses a deep equality check.\n *\n * @type T Type of object.\n * @param object Object to test.\n * @param property Property to test.\n * @param value Value to test.\n * @param message Message to display on error.\n */\n notDeepNestedPropertyVal(object: T, property: string, value: any, message?: string): void;\n }\n\n export interface Config {\n /**\n * Default: false\n */\n includeStack: boolean;\n\n /**\n * Default: true\n */\n showDiff: boolean;\n\n /**\n * Default: 40\n */\n truncateThreshold: number;\n }\n\n export class AssertionError {\n constructor(message: string, _props?: any, ssf?: Function);\n name: string;\n message: string;\n showDiff: boolean;\n stack: string;\n }\n}\n\ndeclare const chai: Chai.ChaiStatic;\n\ndeclare module "chai" {\n export = chai;\n}\n\ninterface Object {\n should: Chai.Assertion;\n}\n',e),dd("Typescript",'// Type definitions for Node.js 8.10.x\n// Project: http://nodejs.org/\n// Definitions by: Microsoft TypeScript \n// DefinitelyTyped \n// Parambir Singh \n// Christian Vaagland Tellnes \n// Wilco Bakker \n// Nicolas Voigt \n// Chigozirim C. \n// Flarna \n// Mariusz Wiktorczyk \n// wwwy3y3 \n// Deividas Bakanas \n// Kelvin Jin \n// Alvis HT Tang \n// Sebastian Silbermann \n// Hannes Magnusson \n// Alberto Schiabel \n// Huw \n// Nicolas Even \n// Bruno Scheufler \n// Hoàng Văn Khải \n// Lishude \n// Andrew Makarov \n// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped\n// TypeScript Version: 2.1\n\n/** inspector module types */\n/// \n\n// This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build\ninterface Console {\n Console: NodeJS.ConsoleConstructor;\n assert(value: any, message?: string, ...optionalParams: any[]): void;\n dir(obj: any, options?: NodeJS.InspectOptions): void;\n debug(message?: any, ...optionalParams: any[]): void;\n error(message?: any, ...optionalParams: any[]): void;\n info(message?: any, ...optionalParams: any[]): void;\n log(message?: any, ...optionalParams: any[]): void;\n time(label: string): void;\n timeEnd(label: string): void;\n trace(message?: any, ...optionalParams: any[]): void;\n warn(message?: any, ...optionalParams: any[]): void;\n}\n\ninterface Error {\n stack?: string;\n}\n\n// Declare "static" methods in Error\ninterface ErrorConstructor {\n /** Create .stack property on a target object */\n captureStackTrace(targetObject: Object, constructorOpt?: Function): void;\n\n /**\n * Optional override for formatting stack traces\n *\n * @see https://github.com/v8/v8/wiki/Stack%20Trace%20API#customizing-stack-traces\n */\n prepareStackTrace?: (err: Error, stackTraces: NodeJS.CallSite[]) => any;\n\n stackTraceLimit: number;\n}\n\n// compat for TypeScript 1.8\n// if you use with --target es3 or --target es5 and use below definitions,\n// use the lib.es6.d.ts that is bundled with TypeScript 1.8.\ninterface MapConstructor { }\ninterface WeakMapConstructor { }\ninterface SetConstructor { }\ninterface WeakSetConstructor { }\n\n// Forward-declare needed types from lib.es2015.d.ts (in case users are using `--lib es5`)\ninterface Iterable { }\ninterface Iterator {\n next(value?: any): IteratorResult;\n}\ninterface IteratorResult { }\ninterface SymbolConstructor {\n readonly iterator: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\n\n// Node.js ESNEXT support\ninterface String {\n /** Removes whitespace from the left end of a string. */\n trimLeft(): string;\n /** Removes whitespace from the right end of a string. */\n trimRight(): string;\n}\n\n/************************************************\n* *\n* GLOBAL *\n* *\n************************************************/\ndeclare var process: NodeJS.Process;\ndeclare var global: NodeJS.Global;\ndeclare var console: Console;\n\ndeclare var __filename: string;\ndeclare var __dirname: string;\n\ndeclare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;\ndeclare namespace setTimeout {\n export function __promisify__(ms: number): Promise;\n export function __promisify__(ms: number, value: T): Promise;\n}\ndeclare function clearTimeout(timeoutId: NodeJS.Timer): void;\ndeclare function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;\ndeclare function clearInterval(intervalId: NodeJS.Timer): void;\ndeclare function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any;\ndeclare namespace setImmediate {\n export function __promisify__(): Promise;\n export function __promisify__(value: T): Promise;\n}\ndeclare function clearImmediate(immediateId: any): void;\n\n// TODO: change to `type NodeRequireFunction = (id: string) => any;` in next mayor version.\ninterface NodeRequireFunction {\n /* tslint:disable-next-line:callable-types */\n (id: string): any;\n}\n\ninterface NodeRequire extends NodeRequireFunction {\n resolve: RequireResolve;\n cache: any;\n extensions: NodeExtensions;\n main: NodeModule | undefined;\n}\n\ninterface RequireResolve {\n (id: string, options?: { paths?: string[]; }): string;\n paths(request: string): string[] | null;\n}\n\ninterface NodeExtensions {\n \'.js\': (m: NodeModule, filename: string) => any;\n \'.json\': (m: NodeModule, filename: string) => any;\n \'.node\': (m: NodeModule, filename: string) => any;\n [ext: string]: (m: NodeModule, filename: string) => any;\n}\n\ndeclare var require: NodeRequire;\n\ninterface NodeModule {\n exports: any;\n require: NodeRequireFunction;\n id: string;\n filename: string;\n loaded: boolean;\n parent: NodeModule | null;\n children: NodeModule[];\n paths: string[];\n}\n\ndeclare var module: NodeModule;\n\n// Same as module.exports\ndeclare var exports: any;\ndeclare var SlowBuffer: {\n new(str: string, encoding?: string): Buffer;\n new(size: number): Buffer;\n new(size: Uint8Array): Buffer;\n new(array: any[]): Buffer;\n prototype: Buffer;\n isBuffer(obj: any): boolean;\n byteLength(string: string, encoding?: string): number;\n concat(list: Buffer[], totalLength?: number): Buffer;\n};\n\n// Buffer class\ntype BufferEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex";\ninterface Buffer extends NodeBuffer { }\n\n/**\n * Raw data is stored in instances of the Buffer class.\n * A Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\n * Valid string encodings: \'ascii\'|\'utf8\'|\'utf16le\'|\'ucs2\'(alias of \'utf16le\')|\'base64\'|\'binary\'(deprecated)|\'hex\'\n */\ndeclare var Buffer: {\n /**\n * Allocates a new buffer containing the given {str}.\n *\n * @param str String to store in buffer.\n * @param encoding encoding to use, optional. Default is \'utf8\'\n */\n new(str: string, encoding?: string): Buffer;\n /**\n * Allocates a new buffer of {size} octets.\n *\n * @param size count of octets to allocate.\n */\n new(size: number): Buffer;\n /**\n * Allocates a new buffer containing the given {array} of octets.\n *\n * @param array The octets to store.\n */\n new(array: Uint8Array): Buffer;\n /**\n * Produces a Buffer backed by the same allocated memory as\n * the given {ArrayBuffer}.\n *\n *\n * @param arrayBuffer The ArrayBuffer with which to share memory.\n */\n new(arrayBuffer: ArrayBuffer): Buffer;\n /**\n * Allocates a new buffer containing the given {array} of octets.\n *\n * @param array The octets to store.\n */\n new(array: any[]): Buffer;\n /**\n * Copies the passed {buffer} data onto a new {Buffer} instance.\n *\n * @param buffer The buffer to copy.\n */\n new(buffer: Buffer): Buffer;\n prototype: Buffer;\n /**\n * When passed a reference to the .buffer property of a TypedArray instance,\n * the newly created Buffer will share the same allocated memory as the TypedArray.\n * The optional {byteOffset} and {length} arguments specify a memory range\n * within the {arrayBuffer} that will be shared by the Buffer.\n *\n * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer()\n */\n from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer;\n /**\n * Creates a new Buffer using the passed {data}\n * @param data data to create a new Buffer\n */\n from(data: any[] | string | Buffer | ArrayBuffer /*| TypedArray*/): Buffer;\n /**\n * Creates a new Buffer containing the given JavaScript string {str}.\n * If provided, the {encoding} parameter identifies the character encoding.\n * If not provided, {encoding} defaults to \'utf8\'.\n */\n from(str: string, encoding?: string): Buffer;\n /**\n * Returns true if {obj} is a Buffer\n *\n * @param obj object to test.\n */\n isBuffer(obj: any): obj is Buffer;\n /**\n * Returns true if {encoding} is a valid encoding argument.\n * Valid string encodings in Node 0.12: \'ascii\'|\'utf8\'|\'utf16le\'|\'ucs2\'(alias of \'utf16le\')|\'base64\'|\'binary\'(deprecated)|\'hex\'\n *\n * @param encoding string to test.\n */\n isEncoding(encoding: string): boolean;\n /**\n * Gives the actual byte length of a string. encoding defaults to \'utf8\'.\n * This is not the same as String.prototype.length since that returns the number of characters in a string.\n *\n * @param string string to test. (TypedArray is also allowed, but it is only available starting ES2017)\n * @param encoding encoding used to evaluate (defaults to \'utf8\')\n */\n byteLength(string: string | Buffer | DataView | ArrayBuffer, encoding?: string): number;\n /**\n * Returns a buffer which is the result of concatenating all the buffers in the list together.\n *\n * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer.\n * If the list has exactly one item, then the first item of the list is returned.\n * If the list has more than one item, then a new Buffer is created.\n *\n * @param list An array of Buffer objects to concatenate\n * @param totalLength Total length of the buffers when concatenated.\n * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly.\n */\n concat(list: Buffer[], totalLength?: number): Buffer;\n /**\n * The same as buf1.compare(buf2).\n */\n compare(buf1: Buffer, buf2: Buffer): number;\n /**\n * Allocates a new buffer of {size} octets.\n *\n * @param size count of octets to allocate.\n * @param fill if specified, buffer will be initialized by calling buf.fill(fill).\n * If parameter is omitted, buffer will be filled with zeros.\n * @param encoding encoding used for call to buf.fill while initalizing\n */\n alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer;\n /**\n * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents\n * of the newly created Buffer are unknown and may contain sensitive data.\n *\n * @param size count of octets to allocate\n */\n allocUnsafe(size: number): Buffer;\n /**\n * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents\n * of the newly created Buffer are unknown and may contain sensitive data.\n *\n * @param size count of octets to allocate\n */\n allocUnsafeSlow(size: number): Buffer;\n /**\n * This is the number of bytes used to determine the size of pre-allocated, internal Buffer instances used for pooling. This value may be modified.\n */\n poolSize: number;\n};\n\n/************************************************\n* *\n* GLOBAL INTERFACES *\n* *\n************************************************/\ndeclare namespace NodeJS {\n export interface InspectOptions {\n showHidden?: boolean;\n depth?: number | null;\n colors?: boolean;\n customInspect?: boolean;\n showProxy?: boolean;\n maxArrayLength?: number | null;\n breakLength?: number;\n }\n\n export interface ConsoleConstructor {\n prototype: Console;\n new(stdout: WritableStream, stderr?: WritableStream): Console;\n }\n\n export interface CallSite {\n /**\n * Value of "this"\n */\n getThis(): any;\n\n /**\n * Type of "this" as a string.\n * This is the name of the function stored in the constructor field of\n * "this", if available. Otherwise the object\'s [[Class]] internal\n * property.\n */\n getTypeName(): string | null;\n\n /**\n * Current function\n */\n getFunction(): Function | undefined;\n\n /**\n * Name of the current function, typically its name property.\n * If a name property is not available an attempt will be made to try\n * to infer a name from the function\'s context.\n */\n getFunctionName(): string | null;\n\n /**\n * Name of the property [of "this" or one of its prototypes] that holds\n * the current function\n */\n getMethodName(): string | null;\n\n /**\n * Name of the script [if this function was defined in a script]\n */\n getFileName(): string | null;\n\n /**\n * Current line number [if this function was defined in a script]\n */\n getLineNumber(): number | null;\n\n /**\n * Current column number [if this function was defined in a script]\n */\n getColumnNumber(): number | null;\n\n /**\n * A call site object representing the location where eval was called\n * [if this function was created using a call to eval]\n */\n getEvalOrigin(): string | undefined;\n\n /**\n * Is this a toplevel invocation, that is, is "this" the global object?\n */\n isToplevel(): boolean;\n\n /**\n * Does this call take place in code defined by a call to eval?\n */\n isEval(): boolean;\n\n /**\n * Is this call in native V8 code?\n */\n isNative(): boolean;\n\n /**\n * Is this a constructor call?\n */\n isConstructor(): boolean;\n }\n\n export interface ErrnoException extends Error {\n errno?: number;\n code?: string;\n path?: string;\n syscall?: string;\n stack?: string;\n }\n\n export class EventEmitter {\n addListener(event: string | symbol, listener: (...args: any[]) => void): this;\n on(event: string | symbol, listener: (...args: any[]) => void): this;\n once(event: string | symbol, listener: (...args: any[]) => void): this;\n removeListener(event: string | symbol, listener: (...args: any[]) => void): this;\n removeAllListeners(event?: string | symbol): this;\n setMaxListeners(n: number): this;\n getMaxListeners(): number;\n listeners(event: string | symbol): Function[];\n emit(event: string | symbol, ...args: any[]): boolean;\n listenerCount(type: string | symbol): number;\n // Added in Node 6...\n prependListener(event: string | symbol, listener: (...args: any[]) => void): this;\n prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;\n eventNames(): Array;\n }\n\n export interface ReadableStream extends EventEmitter {\n readable: boolean;\n read(size?: number): string | Buffer;\n setEncoding(encoding: string): this;\n pause(): this;\n resume(): this;\n isPaused(): boolean;\n pipe(destination: T, options?: { end?: boolean; }): T;\n unpipe(destination?: T): this;\n unshift(chunk: string): void;\n unshift(chunk: Buffer): void;\n wrap(oldStream: ReadableStream): this;\n }\n\n export interface WritableStream extends EventEmitter {\n writable: boolean;\n write(buffer: Buffer | string, cb?: Function): boolean;\n write(str: string, encoding?: string, cb?: Function): boolean;\n end(cb?: Function): void;\n end(buffer: Buffer, cb?: Function): void;\n end(str: string, cb?: Function): void;\n end(str: string, encoding?: string, cb?: Function): void;\n }\n\n export interface ReadWriteStream extends ReadableStream, WritableStream { }\n\n export interface Events extends EventEmitter { }\n\n export interface Domain extends Events {\n run(fn: Function): void;\n add(emitter: Events): void;\n remove(emitter: Events): void;\n bind(cb: (err: Error, data: any) => any): any;\n intercept(cb: (data: any) => any): any;\n dispose(): void;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n on(event: string, listener: (...args: any[]) => void): this;\n once(event: string, listener: (...args: any[]) => void): this;\n removeListener(event: string, listener: (...args: any[]) => void): this;\n removeAllListeners(event?: string): this;\n }\n\n export interface MemoryUsage {\n rss: number;\n heapTotal: number;\n heapUsed: number;\n external: number;\n }\n\n export interface CpuUsage {\n user: number;\n system: number;\n }\n\n export interface ProcessVersions {\n http_parser: string;\n node: string;\n v8: string;\n ares: string;\n uv: string;\n zlib: string;\n modules: string;\n openssl: string;\n }\n\n type Platform = \'aix\'\n | \'android\'\n | \'darwin\'\n | \'freebsd\'\n | \'linux\'\n | \'openbsd\'\n | \'sunos\'\n | \'win32\'\n | \'cygwin\';\n\n type Signals =\n "SIGABRT" | "SIGALRM" | "SIGBUS" | "SIGCHLD" | "SIGCONT" | "SIGFPE" | "SIGHUP" | "SIGILL" | "SIGINT" | "SIGIO" |\n "SIGIOT" | "SIGKILL" | "SIGPIPE" | "SIGPOLL" | "SIGPROF" | "SIGPWR" | "SIGQUIT" | "SIGSEGV" | "SIGSTKFLT" |\n "SIGSTOP" | "SIGSYS" | "SIGTERM" | "SIGTRAP" | "SIGTSTP" | "SIGTTIN" | "SIGTTOU" | "SIGUNUSED" | "SIGURG" |\n "SIGUSR1" | "SIGUSR2" | "SIGVTALRM" | "SIGWINCH" | "SIGXCPU" | "SIGXFSZ" | "SIGBREAK" | "SIGLOST" | "SIGINFO";\n\n type BeforeExitListener = (code: number) => void;\n type DisconnectListener = () => void;\n type ExitListener = (code: number) => void;\n type RejectionHandledListener = (promise: Promise) => void;\n type UncaughtExceptionListener = (error: Error) => void;\n type UnhandledRejectionListener = (reason: any, promise: Promise) => void;\n type WarningListener = (warning: Error) => void;\n type MessageListener = (message: any, sendHandle: any) => void;\n type SignalsListener = () => void;\n type NewListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void;\n type RemoveListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void;\n\n export interface Socket extends ReadWriteStream {\n isTTY?: true;\n }\n\n export interface ProcessEnv {\n [key: string]: string | undefined;\n }\n\n export interface WriteStream extends Socket {\n readonly writableHighWaterMark: number;\n columns?: number;\n rows?: number;\n _write(chunk: any, encoding: string, callback: Function): void;\n _destroy(err: Error, callback: Function): void;\n _final(callback: Function): void;\n setDefaultEncoding(encoding: string): this;\n cork(): void;\n uncork(): void;\n destroy(error?: Error): void;\n }\n export interface ReadStream extends Socket {\n readonly readableHighWaterMark: number;\n isRaw?: boolean;\n setRawMode?(mode: boolean): void;\n _read(size: number): void;\n _destroy(err: Error, callback: Function): void;\n push(chunk: any, encoding?: string): boolean;\n destroy(error?: Error): void;\n }\n\n export interface Process extends EventEmitter {\n stdout: WriteStream;\n stderr: WriteStream;\n stdin: ReadStream;\n openStdin(): Socket;\n argv: string[];\n argv0: string;\n execArgv: string[];\n execPath: string;\n abort(): void;\n chdir(directory: string): void;\n cwd(): string;\n debugPort: number;\n emitWarning(warning: string | Error, name?: string, ctor?: Function): void;\n env: ProcessEnv;\n exit(code?: number): never;\n exitCode: number;\n getgid(): number;\n setgid(id: number | string): void;\n getuid(): number;\n setuid(id: number | string): void;\n geteuid(): number;\n seteuid(id: number | string): void;\n getegid(): number;\n setegid(id: number | string): void;\n getgroups(): number[];\n setgroups(groups: Array): void;\n version: string;\n versions: ProcessVersions;\n config: {\n target_defaults: {\n cflags: any[];\n default_configuration: string;\n defines: string[];\n include_dirs: string[];\n libraries: string[];\n };\n variables: {\n clang: number;\n host_arch: string;\n node_install_npm: boolean;\n node_install_waf: boolean;\n node_prefix: string;\n node_shared_openssl: boolean;\n node_shared_v8: boolean;\n node_shared_zlib: boolean;\n node_use_dtrace: boolean;\n node_use_etw: boolean;\n node_use_openssl: boolean;\n target_arch: string;\n v8_no_strict_aliasing: number;\n v8_use_snapshot: boolean;\n visibility: string;\n };\n };\n kill(pid: number, signal?: string | number): void;\n pid: number;\n title: string;\n arch: string;\n platform: Platform;\n mainModule?: NodeModule;\n memoryUsage(): MemoryUsage;\n cpuUsage(previousValue?: CpuUsage): CpuUsage;\n nextTick(callback: Function, ...args: any[]): void;\n umask(mask?: number): number;\n uptime(): number;\n hrtime(time?: [number, number]): [number, number];\n domain: Domain;\n\n // Worker\n send?(message: any, sendHandle?: any): void;\n disconnect(): void;\n connected: boolean;\n\n /**\n * EventEmitter\n * 1. beforeExit\n * 2. disconnect\n * 3. exit\n * 4. message\n * 5. rejectionHandled\n * 6. uncaughtException\n * 7. unhandledRejection\n * 8. warning\n * 9. message\n * 10. \n * 11. newListener/removeListener inherited from EventEmitter\n */\n addListener(event: "beforeExit", listener: BeforeExitListener): this;\n addListener(event: "disconnect", listener: DisconnectListener): this;\n addListener(event: "exit", listener: ExitListener): this;\n addListener(event: "rejectionHandled", listener: RejectionHandledListener): this;\n addListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;\n addListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;\n addListener(event: "warning", listener: WarningListener): this;\n addListener(event: "message", listener: MessageListener): this;\n addListener(event: Signals, listener: SignalsListener): this;\n addListener(event: "newListener", listener: NewListenerListener): this;\n addListener(event: "removeListener", listener: RemoveListenerListener): this;\n\n emit(event: "beforeExit", code: number): boolean;\n emit(event: "disconnect"): boolean;\n emit(event: "exit", code: number): boolean;\n emit(event: "rejectionHandled", promise: Promise): boolean;\n emit(event: "uncaughtException", error: Error): boolean;\n emit(event: "unhandledRejection", reason: any, promise: Promise): boolean;\n emit(event: "warning", warning: Error): boolean;\n emit(event: "message", message: any, sendHandle: any): this;\n emit(event: Signals): boolean;\n emit(event: "newListener", eventName: string | symbol, listener: (...args: any[]) => void): this;\n emit(event: "removeListener", eventName: string, listener: (...args: any[]) => void): this;\n\n on(event: "beforeExit", listener: BeforeExitListener): this;\n on(event: "disconnect", listener: DisconnectListener): this;\n on(event: "exit", listener: ExitListener): this;\n on(event: "rejectionHandled", listener: RejectionHandledListener): this;\n on(event: "uncaughtException", listener: UncaughtExceptionListener): this;\n on(event: "unhandledRejection", listener: UnhandledRejectionListener): this;\n on(event: "warning", listener: WarningListener): this;\n on(event: "message", listener: MessageListener): this;\n on(event: Signals, listener: SignalsListener): this;\n on(event: "newListener", listener: NewListenerListener): this;\n on(event: "removeListener", listener: RemoveListenerListener): this;\n\n once(event: "beforeExit", listener: BeforeExitListener): this;\n once(event: "disconnect", listener: DisconnectListener): this;\n once(event: "exit", listener: ExitListener): this;\n once(event: "rejectionHandled", listener: RejectionHandledListener): this;\n once(event: "uncaughtException", listener: UncaughtExceptionListener): this;\n once(event: "unhandledRejection", listener: UnhandledRejectionListener): this;\n once(event: "warning", listener: WarningListener): this;\n once(event: "message", listener: MessageListener): this;\n once(event: Signals, listener: SignalsListener): this;\n once(event: "newListener", listener: NewListenerListener): this;\n once(event: "removeListener", listener: RemoveListenerListener): this;\n\n prependListener(event: "beforeExit", listener: BeforeExitListener): this;\n prependListener(event: "disconnect", listener: DisconnectListener): this;\n prependListener(event: "exit", listener: ExitListener): this;\n prependListener(event: "rejectionHandled", listener: RejectionHandledListener): this;\n prependListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;\n prependListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;\n prependListener(event: "warning", listener: WarningListener): this;\n prependListener(event: "message", listener: MessageListener): this;\n prependListener(event: Signals, listener: SignalsListener): this;\n prependListener(event: "newListener", listener: NewListenerListener): this;\n prependListener(event: "removeListener", listener: RemoveListenerListener): this;\n\n prependOnceListener(event: "beforeExit", listener: BeforeExitListener): this;\n prependOnceListener(event: "disconnect", listener: DisconnectListener): this;\n prependOnceListener(event: "exit", listener: ExitListener): this;\n prependOnceListener(event: "rejectionHandled", listener: RejectionHandledListener): this;\n prependOnceListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;\n prependOnceListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;\n prependOnceListener(event: "warning", listener: WarningListener): this;\n prependOnceListener(event: "message", listener: MessageListener): this;\n prependOnceListener(event: Signals, listener: SignalsListener): this;\n prependOnceListener(event: "newListener", listener: NewListenerListener): this;\n prependOnceListener(event: "removeListener", listener: RemoveListenerListener): this;\n\n listeners(event: "beforeExit"): BeforeExitListener[];\n listeners(event: "disconnect"): DisconnectListener[];\n listeners(event: "exit"): ExitListener[];\n listeners(event: "rejectionHandled"): RejectionHandledListener[];\n listeners(event: "uncaughtException"): UncaughtExceptionListener[];\n listeners(event: "unhandledRejection"): UnhandledRejectionListener[];\n listeners(event: "warning"): WarningListener[];\n listeners(event: "message"): MessageListener[];\n listeners(event: Signals): SignalsListener[];\n listeners(event: "newListener"): NewListenerListener[];\n listeners(event: "removeListener"): RemoveListenerListener[];\n }\n\n export interface Global {\n Array: typeof Array;\n ArrayBuffer: typeof ArrayBuffer;\n Boolean: typeof Boolean;\n Buffer: typeof Buffer;\n DataView: typeof DataView;\n Date: typeof Date;\n Error: typeof Error;\n EvalError: typeof EvalError;\n Float32Array: typeof Float32Array;\n Float64Array: typeof Float64Array;\n Function: typeof Function;\n GLOBAL: Global;\n Infinity: typeof Infinity;\n Int16Array: typeof Int16Array;\n Int32Array: typeof Int32Array;\n Int8Array: typeof Int8Array;\n Intl: typeof Intl;\n JSON: typeof JSON;\n Map: MapConstructor;\n Math: typeof Math;\n NaN: typeof NaN;\n Number: typeof Number;\n Object: typeof Object;\n Promise: Function;\n RangeError: typeof RangeError;\n ReferenceError: typeof ReferenceError;\n RegExp: typeof RegExp;\n Set: SetConstructor;\n String: typeof String;\n Symbol: Function;\n SyntaxError: typeof SyntaxError;\n TypeError: typeof TypeError;\n URIError: typeof URIError;\n Uint16Array: typeof Uint16Array;\n Uint32Array: typeof Uint32Array;\n Uint8Array: typeof Uint8Array;\n Uint8ClampedArray: Function;\n WeakMap: WeakMapConstructor;\n WeakSet: WeakSetConstructor;\n clearImmediate: (immediateId: any) => void;\n clearInterval: (intervalId: NodeJS.Timer) => void;\n clearTimeout: (timeoutId: NodeJS.Timer) => void;\n console: typeof console;\n decodeURI: typeof decodeURI;\n decodeURIComponent: typeof decodeURIComponent;\n encodeURI: typeof encodeURI;\n encodeURIComponent: typeof encodeURIComponent;\n escape: (str: string) => string;\n eval: typeof eval;\n global: Global;\n isFinite: typeof isFinite;\n isNaN: typeof isNaN;\n parseFloat: typeof parseFloat;\n parseInt: typeof parseInt;\n process: Process;\n root: Global;\n setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => any;\n setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer;\n setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer;\n undefined: typeof undefined;\n unescape: (str: string) => string;\n gc: () => void;\n v8debug?: any;\n }\n\n export interface Timer {\n ref(): void;\n unref(): void;\n }\n\n class Module {\n static runMain(): void;\n static wrap(code: string): string;\n static builtinModules: string[];\n\n static Module: typeof Module;\n\n exports: any;\n require: NodeRequireFunction;\n id: string;\n filename: string;\n loaded: boolean;\n parent: Module | null;\n children: Module[];\n paths: string[];\n\n constructor(id: string, parent?: Module);\n }\n}\n\ninterface IterableIterator { }\n\n/**\n * @deprecated\n */\ninterface NodeBuffer extends Uint8Array {\n write(string: string, offset?: number, length?: number, encoding?: string): number;\n toString(encoding?: string, start?: number, end?: number): string;\n toJSON(): { type: \'Buffer\', data: any[] };\n equals(otherBuffer: Buffer): boolean;\n compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;\n copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;\n slice(start?: number, end?: number): Buffer;\n writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;\n writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;\n writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;\n writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;\n readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number;\n readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number;\n readIntLE(offset: number, byteLength: number, noAssert?: boolean): number;\n readIntBE(offset: number, byteLength: number, noAssert?: boolean): number;\n readUInt8(offset: number, noAssert?: boolean): number;\n readUInt16LE(offset: number, noAssert?: boolean): number;\n readUInt16BE(offset: number, noAssert?: boolean): number;\n readUInt32LE(offset: number, noAssert?: boolean): number;\n readUInt32BE(offset: number, noAssert?: boolean): number;\n readInt8(offset: number, noAssert?: boolean): number;\n readInt16LE(offset: number, noAssert?: boolean): number;\n readInt16BE(offset: number, noAssert?: boolean): number;\n readInt32LE(offset: number, noAssert?: boolean): number;\n readInt32BE(offset: number, noAssert?: boolean): number;\n readFloatLE(offset: number, noAssert?: boolean): number;\n readFloatBE(offset: number, noAssert?: boolean): number;\n readDoubleLE(offset: number, noAssert?: boolean): number;\n readDoubleBE(offset: number, noAssert?: boolean): number;\n swap16(): Buffer;\n swap32(): Buffer;\n swap64(): Buffer;\n writeUInt8(value: number, offset: number, noAssert?: boolean): number;\n writeUInt16LE(value: number, offset: number, noAssert?: boolean): number;\n writeUInt16BE(value: number, offset: number, noAssert?: boolean): number;\n writeUInt32LE(value: number, offset: number, noAssert?: boolean): number;\n writeUInt32BE(value: number, offset: number, noAssert?: boolean): number;\n writeInt8(value: number, offset: number, noAssert?: boolean): number;\n writeInt16LE(value: number, offset: number, noAssert?: boolean): number;\n writeInt16BE(value: number, offset: number, noAssert?: boolean): number;\n writeInt32LE(value: number, offset: number, noAssert?: boolean): number;\n writeInt32BE(value: number, offset: number, noAssert?: boolean): number;\n writeFloatLE(value: number, offset: number, noAssert?: boolean): number;\n writeFloatBE(value: number, offset: number, noAssert?: boolean): number;\n writeDoubleLE(value: number, offset: number, noAssert?: boolean): number;\n writeDoubleBE(value: number, offset: number, noAssert?: boolean): number;\n fill(value: any, offset?: number, end?: number): this;\n indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;\n lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;\n entries(): IterableIterator<[number, number]>;\n includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean;\n keys(): IterableIterator;\n values(): IterableIterator;\n}\n\n/************************************************\n* *\n* MODULES *\n* *\n************************************************/\ndeclare module "buffer" {\n export var INSPECT_MAX_BYTES: number;\n var BuffType: typeof Buffer;\n var SlowBuffType: typeof SlowBuffer;\n export { BuffType as Buffer, SlowBuffType as SlowBuffer };\n}\n\ndeclare module "querystring" {\n export interface StringifyOptions {\n encodeURIComponent?: Function;\n }\n\n export interface ParseOptions {\n maxKeys?: number;\n decodeURIComponent?: Function;\n }\n\n interface ParsedUrlQuery { [key: string]: string | string[] | undefined; }\n\n export function stringify(obj: T, sep?: string, eq?: string, options?: StringifyOptions): string;\n export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): ParsedUrlQuery;\n export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): T;\n export function escape(str: string): string;\n export function unescape(str: string): string;\n}\n\ndeclare module "events" {\n class internal extends NodeJS.EventEmitter { }\n\n namespace internal {\n export class EventEmitter extends internal {\n static listenerCount(emitter: EventEmitter, event: string | symbol): number; // deprecated\n static defaultMaxListeners: number;\n\n addListener(event: string | symbol, listener: (...args: any[]) => void): this;\n on(event: string | symbol, listener: (...args: any[]) => void): this;\n once(event: string | symbol, listener: (...args: any[]) => void): this;\n prependListener(event: string | symbol, listener: (...args: any[]) => void): this;\n prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;\n removeListener(event: string | symbol, listener: (...args: any[]) => void): this;\n removeAllListeners(event?: string | symbol): this;\n setMaxListeners(n: number): this;\n getMaxListeners(): number;\n listeners(event: string | symbol): Function[];\n emit(event: string | symbol, ...args: any[]): boolean;\n eventNames(): Array;\n listenerCount(type: string | symbol): number;\n }\n }\n\n export = internal;\n}\n\ndeclare module "http" {\n import * as events from "events";\n import * as net from "net";\n import * as stream from "stream";\n import { URL } from "url";\n\n // incoming headers will never contain number\n export interface IncomingHttpHeaders {\n \'accept\'?: string;\n \'access-control-allow-origin\'?: string;\n \'access-control-allow-credentials\'?: string;\n \'access-control-expose-headers\'?: string;\n \'access-control-max-age\'?: string;\n \'access-control-allow-methods\'?: string;\n \'access-control-allow-headers\'?: string;\n \'accept-patch\'?: string;\n \'accept-ranges\'?: string;\n \'authorization\'?: string;\n \'age\'?: string;\n \'allow\'?: string;\n \'alt-svc\'?: string;\n \'cache-control\'?: string;\n \'connection\'?: string;\n \'content-disposition\'?: string;\n \'content-encoding\'?: string;\n \'content-language\'?: string;\n \'content-length\'?: string;\n \'content-location\'?: string;\n \'content-range\'?: string;\n \'content-type\'?: string;\n \'date\'?: string;\n \'expires\'?: string;\n \'host\'?: string;\n \'last-modified\'?: string;\n \'location\'?: string;\n \'pragma\'?: string;\n \'proxy-authenticate\'?: string;\n \'public-key-pins\'?: string;\n \'retry-after\'?: string;\n \'set-cookie\'?: string[];\n \'strict-transport-security\'?: string;\n \'trailer\'?: string;\n \'transfer-encoding\'?: string;\n \'tk\'?: string;\n \'upgrade\'?: string;\n \'vary\'?: string;\n \'via\'?: string;\n \'warning\'?: string;\n \'www-authenticate\'?: string;\n [header: string]: string | string[] | undefined;\n }\n\n // outgoing headers allows numbers (as they are converted internally to strings)\n export interface OutgoingHttpHeaders {\n [header: string]: number | string | string[] | undefined;\n }\n\n export interface ClientRequestArgs {\n protocol?: string;\n host?: string;\n hostname?: string;\n family?: number;\n port?: number | string;\n defaultPort?: number | string;\n localAddress?: string;\n socketPath?: string;\n method?: string;\n path?: string;\n headers?: OutgoingHttpHeaders;\n auth?: string;\n agent?: Agent | boolean;\n _defaultAgent?: Agent;\n timeout?: number;\n // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L278\n createConnection?: (options: ClientRequestArgs, oncreate: (err: Error, socket: net.Socket) => void) => net.Socket;\n }\n\n export class Server extends net.Server {\n constructor(requestListener?: (req: IncomingMessage, res: ServerResponse) => void);\n\n setTimeout(msecs?: number, callback?: () => void): this;\n setTimeout(callback: () => void): this;\n maxHeadersCount: number;\n timeout: number;\n keepAliveTimeout: number;\n }\n /**\n * @deprecated Use IncomingMessage\n */\n export class ServerRequest extends IncomingMessage {\n connection: net.Socket;\n }\n\n // https://github.com/nodejs/node/blob/master/lib/_http_outgoing.js\n export class OutgoingMessage extends stream.Writable {\n upgrading: boolean;\n chunkedEncoding: boolean;\n shouldKeepAlive: boolean;\n useChunkedEncodingByDefault: boolean;\n sendDate: boolean;\n finished: boolean;\n headersSent: boolean;\n connection: net.Socket;\n\n constructor();\n\n setTimeout(msecs: number, callback?: () => void): this;\n destroy(error: Error): void;\n setHeader(name: string, value: number | string | string[]): void;\n getHeader(name: string): number | string | string[] | undefined;\n getHeaders(): OutgoingHttpHeaders;\n getHeaderNames(): string[];\n hasHeader(name: string): boolean;\n removeHeader(name: string): void;\n addTrailers(headers: OutgoingHttpHeaders | Array<[string, string]>): void;\n flushHeaders(): void;\n }\n\n // https://github.com/nodejs/node/blob/master/lib/_http_server.js#L108-L256\n export class ServerResponse extends OutgoingMessage {\n statusCode: number;\n statusMessage: string;\n\n constructor(req: IncomingMessage);\n\n assignSocket(socket: net.Socket): void;\n detachSocket(socket: net.Socket): void;\n // https://github.com/nodejs/node/blob/master/test/parallel/test-http-write-callbacks.js#L53\n // no args in writeContinue callback\n writeContinue(callback?: () => void): void;\n writeHead(statusCode: number, reasonPhrase?: string, headers?: OutgoingHttpHeaders): void;\n writeHead(statusCode: number, headers?: OutgoingHttpHeaders): void;\n }\n\n // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L77\n export class ClientRequest extends OutgoingMessage {\n connection: net.Socket;\n socket: net.Socket;\n aborted: number;\n\n constructor(url: string | URL | ClientRequestArgs, cb?: (res: IncomingMessage) => void);\n\n abort(): void;\n onSocket(socket: net.Socket): void;\n setTimeout(timeout: number, callback?: () => void): this;\n setNoDelay(noDelay?: boolean): void;\n setSocketKeepAlive(enable?: boolean, initialDelay?: number): void;\n }\n\n export class IncomingMessage extends stream.Readable {\n constructor(socket: net.Socket);\n\n httpVersion: string;\n httpVersionMajor: number;\n httpVersionMinor: number;\n connection: net.Socket;\n headers: IncomingHttpHeaders;\n rawHeaders: string[];\n trailers: { [key: string]: string | undefined };\n rawTrailers: string[];\n setTimeout(msecs: number, callback: () => void): this;\n /**\n * Only valid for request obtained from http.Server.\n */\n method?: string;\n /**\n * Only valid for request obtained from http.Server.\n */\n url?: string;\n /**\n * Only valid for response obtained from http.ClientRequest.\n */\n statusCode?: number;\n /**\n * Only valid for response obtained from http.ClientRequest.\n */\n statusMessage?: string;\n socket: net.Socket;\n destroy(error?: Error): void;\n }\n\n /**\n * @deprecated Use IncomingMessage\n */\n export class ClientResponse extends IncomingMessage { }\n\n export interface AgentOptions {\n /**\n * Keep sockets around in a pool to be used by other requests in the future. Default = false\n */\n keepAlive?: boolean;\n /**\n * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000.\n * Only relevant if keepAlive is set to true.\n */\n keepAliveMsecs?: number;\n /**\n * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity\n */\n maxSockets?: number;\n /**\n * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256.\n */\n maxFreeSockets?: number;\n }\n\n export class Agent {\n maxFreeSockets: number;\n maxSockets: number;\n sockets: any;\n requests: any;\n\n constructor(opts?: AgentOptions);\n\n /**\n * Destroy any sockets that are currently in use by the agent.\n * It is usually not necessary to do this. However, if you are using an agent with KeepAlive enabled,\n * then it is best to explicitly shut down the agent when you know that it will no longer be used. Otherwise,\n * sockets may hang open for quite a long time before the server terminates them.\n */\n destroy(): void;\n }\n\n export var METHODS: string[];\n\n export var STATUS_CODES: {\n [errorCode: number]: string | undefined;\n [errorCode: string]: string | undefined;\n };\n\n export function createServer(requestListener?: (request: IncomingMessage, response: ServerResponse) => void): Server;\n export function createClient(port?: number, host?: string): any;\n\n // although RequestOptions are passed as ClientRequestArgs to ClientRequest directly,\n // create interface RequestOptions would make the naming more clear to developers\n export interface RequestOptions extends ClientRequestArgs { }\n export function request(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest;\n export function get(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest;\n export var globalAgent: Agent;\n}\n\ndeclare module "cluster" {\n import * as child from "child_process";\n import * as events from "events";\n import * as net from "net";\n\n // interfaces\n export interface ClusterSettings {\n execArgv?: string[]; // default: process.execArgv\n exec?: string;\n args?: string[];\n silent?: boolean;\n stdio?: any[];\n uid?: number;\n gid?: number;\n inspectPort?: number | (() => number);\n }\n\n export interface Address {\n address: string;\n port: number;\n addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6"\n }\n\n export class Worker extends events.EventEmitter {\n id: number;\n process: child.ChildProcess;\n suicide: boolean;\n send(message: any, sendHandle?: any, callback?: (error: Error) => void): boolean;\n kill(signal?: string): void;\n destroy(signal?: string): void;\n disconnect(): void;\n isConnected(): boolean;\n isDead(): boolean;\n exitedAfterDisconnect: boolean;\n\n /**\n * events.EventEmitter\n * 1. disconnect\n * 2. error\n * 3. exit\n * 4. listening\n * 5. message\n * 6. online\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "disconnect", listener: () => void): this;\n addListener(event: "error", listener: (error: Error) => void): this;\n addListener(event: "exit", listener: (code: number, signal: string) => void): this;\n addListener(event: "listening", listener: (address: Address) => void): this;\n addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n addListener(event: "online", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "disconnect"): boolean;\n emit(event: "error", error: Error): boolean;\n emit(event: "exit", code: number, signal: string): boolean;\n emit(event: "listening", address: Address): boolean;\n emit(event: "message", message: any, handle: net.Socket | net.Server): boolean;\n emit(event: "online"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "disconnect", listener: () => void): this;\n on(event: "error", listener: (error: Error) => void): this;\n on(event: "exit", listener: (code: number, signal: string) => void): this;\n on(event: "listening", listener: (address: Address) => void): this;\n on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n on(event: "online", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "disconnect", listener: () => void): this;\n once(event: "error", listener: (error: Error) => void): this;\n once(event: "exit", listener: (code: number, signal: string) => void): this;\n once(event: "listening", listener: (address: Address) => void): this;\n once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n once(event: "online", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "disconnect", listener: () => void): this;\n prependListener(event: "error", listener: (error: Error) => void): this;\n prependListener(event: "exit", listener: (code: number, signal: string) => void): this;\n prependListener(event: "listening", listener: (address: Address) => void): this;\n prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n prependListener(event: "online", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "disconnect", listener: () => void): this;\n prependOnceListener(event: "error", listener: (error: Error) => void): this;\n prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this;\n prependOnceListener(event: "listening", listener: (address: Address) => void): this;\n prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n prependOnceListener(event: "online", listener: () => void): this;\n }\n\n export interface Cluster extends events.EventEmitter {\n Worker: Worker;\n disconnect(callback?: Function): void;\n fork(env?: any): Worker;\n isMaster: boolean;\n isWorker: boolean;\n // TODO: cluster.schedulingPolicy\n settings: ClusterSettings;\n setupMaster(settings?: ClusterSettings): void;\n worker?: Worker;\n workers?: {\n [index: string]: Worker | undefined\n };\n\n /**\n * events.EventEmitter\n * 1. disconnect\n * 2. exit\n * 3. fork\n * 4. listening\n * 5. message\n * 6. online\n * 7. setup\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "disconnect", listener: (worker: Worker) => void): this;\n addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;\n addListener(event: "fork", listener: (worker: Worker) => void): this;\n addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;\n addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n addListener(event: "online", listener: (worker: Worker) => void): this;\n addListener(event: "setup", listener: (settings: any) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "disconnect", worker: Worker): boolean;\n emit(event: "exit", worker: Worker, code: number, signal: string): boolean;\n emit(event: "fork", worker: Worker): boolean;\n emit(event: "listening", worker: Worker, address: Address): boolean;\n emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;\n emit(event: "online", worker: Worker): boolean;\n emit(event: "setup", settings: any): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "disconnect", listener: (worker: Worker) => void): this;\n on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;\n on(event: "fork", listener: (worker: Worker) => void): this;\n on(event: "listening", listener: (worker: Worker, address: Address) => void): this;\n on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n on(event: "online", listener: (worker: Worker) => void): this;\n on(event: "setup", listener: (settings: any) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "disconnect", listener: (worker: Worker) => void): this;\n once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;\n once(event: "fork", listener: (worker: Worker) => void): this;\n once(event: "listening", listener: (worker: Worker, address: Address) => void): this;\n once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n once(event: "online", listener: (worker: Worker) => void): this;\n once(event: "setup", listener: (settings: any) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "disconnect", listener: (worker: Worker) => void): this;\n prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;\n prependListener(event: "fork", listener: (worker: Worker) => void): this;\n prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;\n prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n prependListener(event: "online", listener: (worker: Worker) => void): this;\n prependListener(event: "setup", listener: (settings: any) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this;\n prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;\n prependOnceListener(event: "fork", listener: (worker: Worker) => void): this;\n prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;\n prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.\n prependOnceListener(event: "online", listener: (worker: Worker) => void): this;\n prependOnceListener(event: "setup", listener: (settings: any) => void): this;\n }\n\n export function disconnect(callback?: Function): void;\n export function fork(env?: any): Worker;\n export var isMaster: boolean;\n export var isWorker: boolean;\n // TODO: cluster.schedulingPolicy\n export var settings: ClusterSettings;\n export function setupMaster(settings?: ClusterSettings): void;\n export var worker: Worker;\n export var workers: {\n [index: string]: Worker | undefined\n };\n\n /**\n * events.EventEmitter\n * 1. disconnect\n * 2. exit\n * 3. fork\n * 4. listening\n * 5. message\n * 6. online\n * 7. setup\n */\n export function addListener(event: string, listener: (...args: any[]) => void): Cluster;\n export function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;\n export function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;\n export function addListener(event: "fork", listener: (worker: Worker) => void): Cluster;\n export function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;\n export function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.\n export function addListener(event: "online", listener: (worker: Worker) => void): Cluster;\n export function addListener(event: "setup", listener: (settings: any) => void): Cluster;\n\n export function emit(event: string | symbol, ...args: any[]): boolean;\n export function emit(event: "disconnect", worker: Worker): boolean;\n export function emit(event: "exit", worker: Worker, code: number, signal: string): boolean;\n export function emit(event: "fork", worker: Worker): boolean;\n export function emit(event: "listening", worker: Worker, address: Address): boolean;\n export function emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;\n export function emit(event: "online", worker: Worker): boolean;\n export function emit(event: "setup", settings: any): boolean;\n\n export function on(event: string, listener: (...args: any[]) => void): Cluster;\n export function on(event: "disconnect", listener: (worker: Worker) => void): Cluster;\n export function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;\n export function on(event: "fork", listener: (worker: Worker) => void): Cluster;\n export function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;\n export function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.\n export function on(event: "online", listener: (worker: Worker) => void): Cluster;\n export function on(event: "setup", listener: (settings: any) => void): Cluster;\n\n export function once(event: string, listener: (...args: any[]) => void): Cluster;\n export function once(event: "disconnect", listener: (worker: Worker) => void): Cluster;\n export function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;\n export function once(event: "fork", listener: (worker: Worker) => void): Cluster;\n export function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;\n export function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.\n export function once(event: "online", listener: (worker: Worker) => void): Cluster;\n export function once(event: "setup", listener: (settings: any) => void): Cluster;\n\n export function removeListener(event: string, listener: (...args: any[]) => void): Cluster;\n export function removeAllListeners(event?: string): Cluster;\n export function setMaxListeners(n: number): Cluster;\n export function getMaxListeners(): number;\n export function listeners(event: string): Function[];\n export function listenerCount(type: string): number;\n\n export function prependListener(event: string, listener: (...args: any[]) => void): Cluster;\n export function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;\n export function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;\n export function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster;\n export function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;\n export function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.\n export function prependListener(event: "online", listener: (worker: Worker) => void): Cluster;\n export function prependListener(event: "setup", listener: (settings: any) => void): Cluster;\n\n export function prependOnceListener(event: string, listener: (...args: any[]) => void): Cluster;\n export function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;\n export function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;\n export function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster;\n export function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;\n export function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.\n export function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster;\n export function prependOnceListener(event: "setup", listener: (settings: any) => void): Cluster;\n\n export function eventNames(): string[];\n}\n\ndeclare module "zlib" {\n import * as stream from "stream";\n\n export interface ZlibOptions {\n flush?: number; // default: zlib.constants.Z_NO_FLUSH\n finishFlush?: number; // default: zlib.constants.Z_FINISH\n chunkSize?: number; // default: 16*1024\n windowBits?: number;\n level?: number; // compression only\n memLevel?: number; // compression only\n strategy?: number; // compression only\n dictionary?: any; // deflate/inflate only, empty dictionary by default\n }\n\n export interface Zlib {\n readonly bytesRead: number;\n close(callback?: () => void): void;\n flush(kind?: number | (() => void), callback?: () => void): void;\n }\n\n export interface ZlibParams {\n params(level: number, strategy: number, callback: () => void): void;\n }\n\n export interface ZlibReset {\n reset(): void;\n }\n\n export interface Gzip extends stream.Transform, Zlib { }\n export interface Gunzip extends stream.Transform, Zlib { }\n export interface Deflate extends stream.Transform, Zlib, ZlibReset, ZlibParams { }\n export interface Inflate extends stream.Transform, Zlib, ZlibReset { }\n export interface DeflateRaw extends stream.Transform, Zlib, ZlibReset, ZlibParams { }\n export interface InflateRaw extends stream.Transform, Zlib, ZlibReset { }\n export interface Unzip extends stream.Transform, Zlib { }\n\n export function createGzip(options?: ZlibOptions): Gzip;\n export function createGunzip(options?: ZlibOptions): Gunzip;\n export function createDeflate(options?: ZlibOptions): Deflate;\n export function createInflate(options?: ZlibOptions): Inflate;\n export function createDeflateRaw(options?: ZlibOptions): DeflateRaw;\n export function createInflateRaw(options?: ZlibOptions): InflateRaw;\n export function createUnzip(options?: ZlibOptions): Unzip;\n\n type InputType = string | Buffer | DataView /* | TypedArray */;\n export function deflate(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function deflate(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function deflateSync(buf: InputType, options?: ZlibOptions): Buffer;\n export function deflateRaw(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function deflateRaw(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function deflateRawSync(buf: InputType, options?: ZlibOptions): Buffer;\n export function gzip(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function gzip(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function gzipSync(buf: InputType, options?: ZlibOptions): Buffer;\n export function gunzip(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function gunzip(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function gunzipSync(buf: InputType, options?: ZlibOptions): Buffer;\n export function inflate(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function inflate(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function inflateSync(buf: InputType, options?: ZlibOptions): Buffer;\n export function inflateRaw(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function inflateRaw(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function inflateRawSync(buf: InputType, options?: ZlibOptions): Buffer;\n export function unzip(buf: InputType, callback: (error: Error | null, result: Buffer) => void): void;\n export function unzip(buf: InputType, options: ZlibOptions, callback: (error: Error | null, result: Buffer) => void): void;\n export function unzipSync(buf: InputType, options?: ZlibOptions): Buffer;\n\n export namespace constants {\n // Allowed flush values.\n\n export const Z_NO_FLUSH: number;\n export const Z_PARTIAL_FLUSH: number;\n export const Z_SYNC_FLUSH: number;\n export const Z_FULL_FLUSH: number;\n export const Z_FINISH: number;\n export const Z_BLOCK: number;\n export const Z_TREES: number;\n\n // Return codes for the compression/decompression functions. Negative values are errors, positive values are used for special but normal events.\n\n export const Z_OK: number;\n export const Z_STREAM_END: number;\n export const Z_NEED_DICT: number;\n export const Z_ERRNO: number;\n export const Z_STREAM_ERROR: number;\n export const Z_DATA_ERROR: number;\n export const Z_MEM_ERROR: number;\n export const Z_BUF_ERROR: number;\n export const Z_VERSION_ERROR: number;\n\n // Compression levels.\n\n export const Z_NO_COMPRESSION: number;\n export const Z_BEST_SPEED: number;\n export const Z_BEST_COMPRESSION: number;\n export const Z_DEFAULT_COMPRESSION: number;\n\n // Compression strategy.\n\n export const Z_FILTERED: number;\n export const Z_HUFFMAN_ONLY: number;\n export const Z_RLE: number;\n export const Z_FIXED: number;\n export const Z_DEFAULT_STRATEGY: number;\n }\n\n // Constants\n export var Z_NO_FLUSH: number;\n export var Z_PARTIAL_FLUSH: number;\n export var Z_SYNC_FLUSH: number;\n export var Z_FULL_FLUSH: number;\n export var Z_FINISH: number;\n export var Z_BLOCK: number;\n export var Z_TREES: number;\n export var Z_OK: number;\n export var Z_STREAM_END: number;\n export var Z_NEED_DICT: number;\n export var Z_ERRNO: number;\n export var Z_STREAM_ERROR: number;\n export var Z_DATA_ERROR: number;\n export var Z_MEM_ERROR: number;\n export var Z_BUF_ERROR: number;\n export var Z_VERSION_ERROR: number;\n export var Z_NO_COMPRESSION: number;\n export var Z_BEST_SPEED: number;\n export var Z_BEST_COMPRESSION: number;\n export var Z_DEFAULT_COMPRESSION: number;\n export var Z_FILTERED: number;\n export var Z_HUFFMAN_ONLY: number;\n export var Z_RLE: number;\n export var Z_FIXED: number;\n export var Z_DEFAULT_STRATEGY: number;\n export var Z_BINARY: number;\n export var Z_TEXT: number;\n export var Z_ASCII: number;\n export var Z_UNKNOWN: number;\n export var Z_DEFLATED: number;\n}\n\ndeclare module "os" {\n export interface CpuInfo {\n model: string;\n speed: number;\n times: {\n user: number;\n nice: number;\n sys: number;\n idle: number;\n irq: number;\n };\n }\n\n export interface NetworkInterfaceBase {\n address: string;\n netmask: string;\n mac: string;\n internal: boolean;\n }\n\n export interface NetworkInterfaceInfoIPv4 extends NetworkInterfaceBase {\n family: "IPv4";\n }\n\n export interface NetworkInterfaceInfoIPv6 extends NetworkInterfaceBase {\n family: "IPv6";\n scopeid: number;\n }\n\n export type NetworkInterfaceInfo = NetworkInterfaceInfoIPv4 | NetworkInterfaceInfoIPv6;\n\n export function hostname(): string;\n export function loadavg(): number[];\n export function uptime(): number;\n export function freemem(): number;\n export function totalmem(): number;\n export function cpus(): CpuInfo[];\n export function type(): string;\n export function release(): string;\n export function networkInterfaces(): { [index: string]: NetworkInterfaceInfo[] };\n export function homedir(): string;\n export function userInfo(options?: { encoding: string }): { username: string, uid: number, gid: number, shell: any, homedir: string };\n export var constants: {\n UV_UDP_REUSEADDR: number,\n signals: {\n SIGHUP: number;\n SIGINT: number;\n SIGQUIT: number;\n SIGILL: number;\n SIGTRAP: number;\n SIGABRT: number;\n SIGIOT: number;\n SIGBUS: number;\n SIGFPE: number;\n SIGKILL: number;\n SIGUSR1: number;\n SIGSEGV: number;\n SIGUSR2: number;\n SIGPIPE: number;\n SIGALRM: number;\n SIGTERM: number;\n SIGCHLD: number;\n SIGSTKFLT: number;\n SIGCONT: number;\n SIGSTOP: number;\n SIGTSTP: number;\n SIGTTIN: number;\n SIGTTOU: number;\n SIGURG: number;\n SIGXCPU: number;\n SIGXFSZ: number;\n SIGVTALRM: number;\n SIGPROF: number;\n SIGWINCH: number;\n SIGIO: number;\n SIGPOLL: number;\n SIGPWR: number;\n SIGSYS: number;\n SIGUNUSED: number;\n },\n errno: {\n E2BIG: number;\n EACCES: number;\n EADDRINUSE: number;\n EADDRNOTAVAIL: number;\n EAFNOSUPPORT: number;\n EAGAIN: number;\n EALREADY: number;\n EBADF: number;\n EBADMSG: number;\n EBUSY: number;\n ECANCELED: number;\n ECHILD: number;\n ECONNABORTED: number;\n ECONNREFUSED: number;\n ECONNRESET: number;\n EDEADLK: number;\n EDESTADDRREQ: number;\n EDOM: number;\n EDQUOT: number;\n EEXIST: number;\n EFAULT: number;\n EFBIG: number;\n EHOSTUNREACH: number;\n EIDRM: number;\n EILSEQ: number;\n EINPROGRESS: number;\n EINTR: number;\n EINVAL: number;\n EIO: number;\n EISCONN: number;\n EISDIR: number;\n ELOOP: number;\n EMFILE: number;\n EMLINK: number;\n EMSGSIZE: number;\n EMULTIHOP: number;\n ENAMETOOLONG: number;\n ENETDOWN: number;\n ENETRESET: number;\n ENETUNREACH: number;\n ENFILE: number;\n ENOBUFS: number;\n ENODATA: number;\n ENODEV: number;\n ENOENT: number;\n ENOEXEC: number;\n ENOLCK: number;\n ENOLINK: number;\n ENOMEM: number;\n ENOMSG: number;\n ENOPROTOOPT: number;\n ENOSPC: number;\n ENOSR: number;\n ENOSTR: number;\n ENOSYS: number;\n ENOTCONN: number;\n ENOTDIR: number;\n ENOTEMPTY: number;\n ENOTSOCK: number;\n ENOTSUP: number;\n ENOTTY: number;\n ENXIO: number;\n EOPNOTSUPP: number;\n EOVERFLOW: number;\n EPERM: number;\n EPIPE: number;\n EPROTO: number;\n EPROTONOSUPPORT: number;\n EPROTOTYPE: number;\n ERANGE: number;\n EROFS: number;\n ESPIPE: number;\n ESRCH: number;\n ESTALE: number;\n ETIME: number;\n ETIMEDOUT: number;\n ETXTBSY: number;\n EWOULDBLOCK: number;\n EXDEV: number;\n },\n };\n export function arch(): string;\n export function platform(): NodeJS.Platform;\n export function tmpdir(): string;\n export const EOL: string;\n export function endianness(): "BE" | "LE";\n}\n\ndeclare module "https" {\n import * as tls from "tls";\n import * as events from "events";\n import * as http from "http";\n import { URL } from "url";\n\n export type ServerOptions = tls.SecureContextOptions & tls.TlsOptions;\n\n // see https://nodejs.org/docs/latest-v8.x/api/https.html#https_https_request_options_callback\n type extendedRequestKeys = "pfx" |\n "key" |\n "passphrase" |\n "cert" |\n "ca" |\n "ciphers" |\n "rejectUnauthorized" |\n "secureProtocol" |\n "servername";\n\n export type RequestOptions = http.RequestOptions & Pick;\n\n export interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions {\n rejectUnauthorized?: boolean;\n maxCachedSessions?: number;\n }\n\n export class Agent extends http.Agent {\n constructor(options?: AgentOptions);\n options: AgentOptions;\n }\n\n export class Server extends tls.Server {\n setTimeout(callback: () => void): this;\n setTimeout(msecs?: number, callback?: () => void): this;\n timeout: number;\n keepAliveTimeout: number;\n }\n\n export function createServer(options: ServerOptions, requestListener?: (req: http.IncomingMessage, res: http.ServerResponse) => void): Server;\n export function request(options: RequestOptions | string | URL, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;\n export function get(options: RequestOptions | string | URL, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;\n export var globalAgent: Agent;\n}\n\ndeclare module "punycode" {\n export function decode(string: string): string;\n export function encode(string: string): string;\n export function toUnicode(domain: string): string;\n export function toASCII(domain: string): string;\n export var ucs2: ucs2;\n interface ucs2 {\n decode(string: string): number[];\n encode(codePoints: number[]): string;\n }\n export var version: any;\n}\n\ndeclare module "repl" {\n import * as stream from "stream";\n import * as readline from "readline";\n\n export interface ReplOptions {\n prompt?: string;\n input?: NodeJS.ReadableStream;\n output?: NodeJS.WritableStream;\n terminal?: boolean;\n eval?: Function;\n useColors?: boolean;\n useGlobal?: boolean;\n ignoreUndefined?: boolean;\n writer?: Function;\n completer?: Function;\n replMode?: any;\n breakEvalOnSigint?: any;\n }\n\n export interface REPLServer extends readline.ReadLine {\n context: any;\n inputStream: NodeJS.ReadableStream;\n outputStream: NodeJS.WritableStream;\n\n defineCommand(keyword: string, cmd: Function | { help: string, action: Function }): void;\n displayPrompt(preserveCursor?: boolean): void;\n\n /**\n * events.EventEmitter\n * 1. exit\n * 2. reset\n */\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "exit", listener: () => void): this;\n addListener(event: "reset", listener: (...args: any[]) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "exit"): boolean;\n emit(event: "reset", context: any): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "exit", listener: () => void): this;\n on(event: "reset", listener: (...args: any[]) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "exit", listener: () => void): this;\n once(event: "reset", listener: (...args: any[]) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "exit", listener: () => void): this;\n prependListener(event: "reset", listener: (...args: any[]) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "exit", listener: () => void): this;\n prependOnceListener(event: "reset", listener: (...args: any[]) => void): this;\n }\n\n export function start(options?: string | ReplOptions): REPLServer;\n\n export class Recoverable extends SyntaxError {\n err: Error;\n\n constructor(err: Error);\n }\n}\n\ndeclare module "readline" {\n import * as events from "events";\n import * as stream from "stream";\n\n export interface Key {\n sequence?: string;\n name?: string;\n ctrl?: boolean;\n meta?: boolean;\n shift?: boolean;\n }\n\n export interface ReadLine extends events.EventEmitter {\n setPrompt(prompt: string): void;\n prompt(preserveCursor?: boolean): void;\n question(query: string, callback: (answer: string) => void): void;\n pause(): ReadLine;\n resume(): ReadLine;\n close(): void;\n write(data: string | Buffer, key?: Key): void;\n\n /**\n * events.EventEmitter\n * 1. close\n * 2. line\n * 3. pause\n * 4. resume\n * 5. SIGCONT\n * 6. SIGINT\n * 7. SIGTSTP\n */\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "line", listener: (input: any) => void): this;\n addListener(event: "pause", listener: () => void): this;\n addListener(event: "resume", listener: () => void): this;\n addListener(event: "SIGCONT", listener: () => void): this;\n addListener(event: "SIGINT", listener: () => void): this;\n addListener(event: "SIGTSTP", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close"): boolean;\n emit(event: "line", input: any): boolean;\n emit(event: "pause"): boolean;\n emit(event: "resume"): boolean;\n emit(event: "SIGCONT"): boolean;\n emit(event: "SIGINT"): boolean;\n emit(event: "SIGTSTP"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "line", listener: (input: any) => void): this;\n on(event: "pause", listener: () => void): this;\n on(event: "resume", listener: () => void): this;\n on(event: "SIGCONT", listener: () => void): this;\n on(event: "SIGINT", listener: () => void): this;\n on(event: "SIGTSTP", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "line", listener: (input: any) => void): this;\n once(event: "pause", listener: () => void): this;\n once(event: "resume", listener: () => void): this;\n once(event: "SIGCONT", listener: () => void): this;\n once(event: "SIGINT", listener: () => void): this;\n once(event: "SIGTSTP", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "line", listener: (input: any) => void): this;\n prependListener(event: "pause", listener: () => void): this;\n prependListener(event: "resume", listener: () => void): this;\n prependListener(event: "SIGCONT", listener: () => void): this;\n prependListener(event: "SIGINT", listener: () => void): this;\n prependListener(event: "SIGTSTP", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "line", listener: (input: any) => void): this;\n prependOnceListener(event: "pause", listener: () => void): this;\n prependOnceListener(event: "resume", listener: () => void): this;\n prependOnceListener(event: "SIGCONT", listener: () => void): this;\n prependOnceListener(event: "SIGINT", listener: () => void): this;\n prependOnceListener(event: "SIGTSTP", listener: () => void): this;\n }\n\n type Completer = (line: string) => CompleterResult;\n type AsyncCompleter = (line: string, callback: (err: any, result: CompleterResult) => void) => any;\n\n export type CompleterResult = [string[], string];\n\n export interface ReadLineOptions {\n input: NodeJS.ReadableStream;\n output?: NodeJS.WritableStream;\n completer?: Completer | AsyncCompleter;\n terminal?: boolean;\n historySize?: number;\n prompt?: string;\n crlfDelay?: number;\n removeHistoryDuplicates?: boolean;\n }\n\n export function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): ReadLine;\n export function createInterface(options: ReadLineOptions): ReadLine;\n\n export function cursorTo(stream: NodeJS.WritableStream, x: number, y?: number): void;\n export function emitKeypressEvents(stream: NodeJS.ReadableStream, interface?: ReadLine): void;\n export function moveCursor(stream: NodeJS.WritableStream, dx: number | string, dy: number | string): void;\n export function clearLine(stream: NodeJS.WritableStream, dir: number): void;\n export function clearScreenDown(stream: NodeJS.WritableStream): void;\n}\n\ndeclare module "vm" {\n export interface Context { }\n export interface ScriptOptions {\n filename?: string;\n lineOffset?: number;\n columnOffset?: number;\n displayErrors?: boolean;\n timeout?: number;\n cachedData?: Buffer;\n produceCachedData?: boolean;\n }\n export interface RunningScriptOptions {\n filename?: string;\n lineOffset?: number;\n columnOffset?: number;\n displayErrors?: boolean;\n timeout?: number;\n }\n export class Script {\n constructor(code: string, options?: ScriptOptions);\n runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any;\n runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any;\n runInThisContext(options?: RunningScriptOptions): any;\n }\n export function createContext(sandbox?: Context): Context;\n export function isContext(sandbox: Context): boolean;\n export function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions | string): any;\n export function runInDebugContext(code: string): any;\n export function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions | string): any;\n export function runInThisContext(code: string, options?: RunningScriptOptions | string): any;\n}\n\ndeclare module "child_process" {\n import * as events from "events";\n import * as stream from "stream";\n import * as net from "net";\n\n export interface ChildProcess extends events.EventEmitter {\n stdin: stream.Writable;\n stdout: stream.Readable;\n stderr: stream.Readable;\n stdio: [stream.Writable, stream.Readable, stream.Readable];\n killed: boolean;\n pid: number;\n kill(signal?: string): void;\n send(message: any, callback?: (error: Error) => void): boolean;\n send(message: any, sendHandle?: net.Socket | net.Server, callback?: (error: Error) => void): boolean;\n send(message: any, sendHandle?: net.Socket | net.Server, options?: MessageOptions, callback?: (error: Error) => void): boolean;\n connected: boolean;\n disconnect(): void;\n unref(): void;\n ref(): void;\n\n /**\n * events.EventEmitter\n * 1. close\n * 2. disconnect\n * 3. error\n * 4. exit\n * 5. message\n */\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: (code: number, signal: string) => void): this;\n addListener(event: "disconnect", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "exit", listener: (code: number, signal: string) => void): this;\n addListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close", code: number, signal: string): boolean;\n emit(event: "disconnect"): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "exit", code: number, signal: string): boolean;\n emit(event: "message", message: any, sendHandle: net.Socket | net.Server): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: (code: number, signal: string) => void): this;\n on(event: "disconnect", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "exit", listener: (code: number, signal: string) => void): this;\n on(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: (code: number, signal: string) => void): this;\n once(event: "disconnect", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "exit", listener: (code: number, signal: string) => void): this;\n once(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: (code: number, signal: string) => void): this;\n prependListener(event: "disconnect", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "exit", listener: (code: number, signal: string) => void): this;\n prependListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: (code: number, signal: string) => void): this;\n prependOnceListener(event: "disconnect", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this;\n prependOnceListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;\n }\n\n export interface MessageOptions {\n keepOpen?: boolean;\n }\n\n export interface SpawnOptions {\n cwd?: string;\n env?: any;\n stdio?: any;\n detached?: boolean;\n uid?: number;\n gid?: number;\n shell?: boolean | string;\n windowsVerbatimArguments?: boolean;\n windowsHide?: boolean;\n }\n\n export function spawn(command: string, args?: ReadonlyArray, options?: SpawnOptions): ChildProcess;\n\n export interface ExecOptions {\n cwd?: string;\n env?: any;\n shell?: string;\n timeout?: number;\n maxBuffer?: number;\n killSignal?: string;\n uid?: number;\n gid?: number;\n windowsHide?: boolean;\n }\n\n export interface ExecOptionsWithStringEncoding extends ExecOptions {\n encoding: BufferEncoding;\n }\n\n export interface ExecOptionsWithBufferEncoding extends ExecOptions {\n encoding: string | null; // specify `null`.\n }\n\n // no `options` definitely means stdout/stderr are `string`.\n export function exec(command: string, callback?: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n\n // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.\n export function exec(command: string, options: { encoding: "buffer" | null } & ExecOptions, callback?: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;\n\n // `options` with well known `encoding` means stdout/stderr are definitely `string`.\n export function exec(command: string, options: { encoding: BufferEncoding } & ExecOptions, callback?: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n\n // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.\n // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.\n export function exec(command: string, options: { encoding: string } & ExecOptions, callback?: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;\n\n // `options` without an `encoding` means stdout/stderr are definitely `string`.\n export function exec(command: string, options: ExecOptions, callback?: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n\n // fallback if nothing else matches. Worst case is always `string | Buffer`.\n export function exec(command: string, options: ({ encoding?: string | null } & ExecOptions) | undefined | null, callback?: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace exec {\n export function __promisify__(command: string): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(command: string, options: { encoding: "buffer" | null } & ExecOptions): Promise<{ stdout: Buffer, stderr: Buffer }>;\n export function __promisify__(command: string, options: { encoding: BufferEncoding } & ExecOptions): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(command: string, options: ExecOptions): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(command: string, options?: ({ encoding?: string | null } & ExecOptions) | null): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>;\n }\n\n export interface ExecFileOptions {\n cwd?: string;\n env?: any;\n timeout?: number;\n maxBuffer?: number;\n killSignal?: string;\n uid?: number;\n gid?: number;\n windowsHide?: boolean;\n windowsVerbatimArguments?: boolean;\n }\n export interface ExecFileOptionsWithStringEncoding extends ExecFileOptions {\n encoding: BufferEncoding;\n }\n export interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions {\n encoding: \'buffer\' | null;\n }\n export interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions {\n encoding: string;\n }\n\n export function execFile(file: string): ChildProcess;\n export function execFile(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess;\n\n // no `options` definitely means stdout/stderr are `string`.\n export function execFile(file: string, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n\n // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.\n export function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithBufferEncoding, callback: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;\n\n // `options` with well known `encoding` means stdout/stderr are definitely `string`.\n export function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithStringEncoding, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n\n // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.\n // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.\n export function execFile(file: string, options: ExecFileOptionsWithOtherEncoding, callback: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithOtherEncoding, callback: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;\n\n // `options` without an `encoding` means stdout/stderr are definitely `string`.\n export function execFile(file: string, options: ExecFileOptions, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, options: ExecFileOptions, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;\n\n // fallback if nothing else matches. Worst case is always `string | Buffer`.\n export function execFile(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null, callback: ((error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null): ChildProcess;\n export function execFile(file: string, args: string[] | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null, callback: ((error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null): ChildProcess;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace execFile {\n export function __promisify__(file: string): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(file: string, args: string[] | undefined | null): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(file: string, options: ExecFileOptionsWithBufferEncoding): Promise<{ stdout: Buffer, stderr: Buffer }>;\n export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithBufferEncoding): Promise<{ stdout: Buffer, stderr: Buffer }>;\n export function __promisify__(file: string, options: ExecFileOptionsWithStringEncoding): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithStringEncoding): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(file: string, options: ExecFileOptionsWithOtherEncoding): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>;\n export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithOtherEncoding): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>;\n export function __promisify__(file: string, options: ExecFileOptions): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptions): Promise<{ stdout: string, stderr: string }>;\n export function __promisify__(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>;\n export function __promisify__(file: string, args: string[] | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): Promise<{ stdout: string | Buffer, stderr: string | Buffer }>;\n }\n\n export interface ForkOptions {\n cwd?: string;\n env?: any;\n execPath?: string;\n execArgv?: string[];\n silent?: boolean;\n stdio?: any[];\n uid?: number;\n gid?: number;\n windowsVerbatimArguments?: boolean;\n }\n export function fork(modulePath: string, args?: string[], options?: ForkOptions): ChildProcess;\n\n export interface SpawnSyncOptions {\n cwd?: string;\n input?: string | Buffer;\n stdio?: any;\n env?: any;\n uid?: number;\n gid?: number;\n timeout?: number;\n killSignal?: string;\n maxBuffer?: number;\n encoding?: string;\n shell?: boolean | string;\n windowsHide?: boolean;\n windowsVerbatimArguments?: boolean;\n }\n export interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions {\n encoding: BufferEncoding;\n }\n export interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions {\n encoding: string; // specify `null`.\n }\n export interface SpawnSyncReturns {\n pid: number;\n output: string[];\n stdout: T;\n stderr: T;\n status: number;\n signal: string;\n error: Error;\n }\n export function spawnSync(command: string): SpawnSyncReturns;\n export function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns;\n export function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns;\n export function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns;\n export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns;\n export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns;\n export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptions): SpawnSyncReturns;\n\n export interface ExecSyncOptions {\n cwd?: string;\n input?: string | Buffer;\n stdio?: any;\n env?: any;\n shell?: string;\n uid?: number;\n gid?: number;\n timeout?: number;\n killSignal?: string;\n maxBuffer?: number;\n encoding?: string;\n windowsHide?: boolean;\n }\n export interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions {\n encoding: BufferEncoding;\n }\n export interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions {\n encoding: string; // specify `null`.\n }\n export function execSync(command: string): Buffer;\n export function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string;\n export function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer;\n export function execSync(command: string, options?: ExecSyncOptions): Buffer;\n\n export interface ExecFileSyncOptions {\n cwd?: string;\n input?: string | Buffer;\n stdio?: any;\n env?: any;\n uid?: number;\n gid?: number;\n timeout?: number;\n killSignal?: string;\n maxBuffer?: number;\n encoding?: string;\n windowsHide?: boolean;\n }\n export interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions {\n encoding: BufferEncoding;\n }\n export interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions {\n encoding: string; // specify `null`.\n }\n export function execFileSync(command: string): Buffer;\n export function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string;\n export function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;\n export function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer;\n export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithStringEncoding): string;\n export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;\n export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptions): Buffer;\n}\n\ndeclare module "url" {\n import { ParsedUrlQuery } from \'querystring\';\n\n export interface UrlObjectCommon {\n auth?: string;\n hash?: string;\n host?: string;\n hostname?: string;\n href?: string;\n path?: string;\n pathname?: string;\n protocol?: string;\n search?: string;\n slashes?: boolean;\n }\n\n // Input to `url.format`\n export interface UrlObject extends UrlObjectCommon {\n port?: string | number;\n query?: string | null | { [key: string]: any };\n }\n\n // Output of `url.parse`\n export interface Url extends UrlObjectCommon {\n port?: string;\n query?: string | null | ParsedUrlQuery;\n }\n\n export interface UrlWithParsedQuery extends Url {\n query: ParsedUrlQuery;\n }\n\n export interface UrlWithStringQuery extends Url {\n query: string | null;\n }\n\n export function parse(urlStr: string): UrlWithStringQuery;\n export function parse(urlStr: string, parseQueryString: false | undefined, slashesDenoteHost?: boolean): UrlWithStringQuery;\n export function parse(urlStr: string, parseQueryString: true, slashesDenoteHost?: boolean): UrlWithParsedQuery;\n export function parse(urlStr: string, parseQueryString: boolean, slashesDenoteHost?: boolean): Url;\n\n export function format(URL: URL, options?: URLFormatOptions): string;\n export function format(urlObject: UrlObject | string): string;\n export function resolve(from: string, to: string): string;\n\n export function domainToASCII(domain: string): string;\n export function domainToUnicode(domain: string): string;\n\n export interface URLFormatOptions {\n auth?: boolean;\n fragment?: boolean;\n search?: boolean;\n unicode?: boolean;\n }\n\n export class URLSearchParams implements Iterable<[string, string]> {\n constructor(init?: URLSearchParams | string | { [key: string]: string | string[] | undefined } | Iterable<[string, string]> | Array<[string, string]>);\n append(name: string, value: string): void;\n delete(name: string): void;\n entries(): IterableIterator<[string, string]>;\n forEach(callback: (value: string, name: string) => void): void;\n get(name: string): string | null;\n getAll(name: string): string[];\n has(name: string): boolean;\n keys(): IterableIterator;\n set(name: string, value: string): void;\n sort(): void;\n toString(): string;\n values(): IterableIterator;\n [Symbol.iterator](): IterableIterator<[string, string]>;\n }\n\n export class URL {\n constructor(input: string, base?: string | URL);\n hash: string;\n host: string;\n hostname: string;\n href: string;\n readonly origin: string;\n password: string;\n pathname: string;\n port: string;\n protocol: string;\n search: string;\n readonly searchParams: URLSearchParams;\n username: string;\n toString(): string;\n toJSON(): string;\n }\n}\n\ndeclare module "dns" {\n // Supported getaddrinfo flags.\n export const ADDRCONFIG: number;\n export const V4MAPPED: number;\n\n export interface LookupOptions {\n family?: number;\n hints?: number;\n all?: boolean;\n }\n\n export interface LookupOneOptions extends LookupOptions {\n all?: false;\n }\n\n export interface LookupAllOptions extends LookupOptions {\n all: true;\n }\n\n export interface LookupAddress {\n address: string;\n family: number;\n }\n\n export function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void;\n export function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void;\n export function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException, addresses: LookupAddress[]) => void): void;\n export function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException, address: string | LookupAddress[], family: number) => void): void;\n export function lookup(hostname: string, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace lookup {\n export function __promisify__(hostname: string, options: LookupAllOptions): Promise<{ address: LookupAddress[] }>;\n export function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise<{ address: string, family: number }>;\n export function __promisify__(hostname: string, options?: LookupOptions | number): Promise<{ address: string | LookupAddress[], family?: number }>;\n }\n\n export function lookupService(address: string, port: number, callback: (err: NodeJS.ErrnoException, hostname: string, service: string) => void): void;\n\n export namespace lookupService {\n export function __promisify__(address: string, port: number): Promise<{ hostname: string, service: string }>;\n }\n\n export interface ResolveOptions {\n ttl: boolean;\n }\n\n export interface ResolveWithTtlOptions extends ResolveOptions {\n ttl: true;\n }\n\n export interface RecordWithTtl {\n address: string;\n ttl: number;\n }\n\n export interface MxRecord {\n priority: number;\n exchange: string;\n }\n\n export interface NaptrRecord {\n flags: string;\n service: string;\n regexp: string;\n replacement: string;\n order: number;\n preference: number;\n }\n\n export interface SoaRecord {\n nsname: string;\n hostmaster: string;\n serial: number;\n refresh: number;\n retry: number;\n expire: number;\n minttl: number;\n }\n\n export interface SrvRecord {\n priority: number;\n weight: number;\n port: number;\n name: string;\n }\n\n export function resolve(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void;\n export function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void;\n export function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException, addresses: SoaRecord) => void): void;\n export function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void;\n export function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void;\n export function resolve(hostname: string, rrtype: string, callback: (err: NodeJS.ErrnoException, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][]) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace resolve {\n export function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise;\n export function __promisify__(hostname: string, rrtype: "MX"): Promise;\n export function __promisify__(hostname: string, rrtype: "NAPTR"): Promise;\n export function __promisify__(hostname: string, rrtype: "SOA"): Promise;\n export function __promisify__(hostname: string, rrtype: "SRV"): Promise;\n export function __promisify__(hostname: string, rrtype: "TXT"): Promise;\n export function __promisify__(hostname: string, rrtype?: string): Promise;\n }\n\n export function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void;\n export function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace resolve4 {\n export function __promisify__(hostname: string): Promise;\n export function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise;\n export function __promisify__(hostname: string, options?: ResolveOptions): Promise;\n }\n\n export function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void;\n export function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace resolve6 {\n export function __promisify__(hostname: string): Promise;\n export function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise;\n export function __promisify__(hostname: string, options?: ResolveOptions): Promise;\n }\n\n export function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void;\n export function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void;\n export function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void;\n export function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException, address: SoaRecord) => void): void;\n export function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void;\n export function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void;\n\n export function reverse(ip: string, callback: (err: NodeJS.ErrnoException, hostnames: string[]) => void): void;\n export function setServers(servers: string[]): void;\n\n // Error codes\n export var NODATA: string;\n export var FORMERR: string;\n export var SERVFAIL: string;\n export var NOTFOUND: string;\n export var NOTIMP: string;\n export var REFUSED: string;\n export var BADQUERY: string;\n export var BADNAME: string;\n export var BADFAMILY: string;\n export var BADRESP: string;\n export var CONNREFUSED: string;\n export var TIMEOUT: string;\n export var EOF: string;\n export var FILE: string;\n export var NOMEM: string;\n export var DESTRUCTION: string;\n export var BADSTR: string;\n export var BADFLAGS: string;\n export var NONAME: string;\n export var BADHINTS: string;\n export var NOTINITIALIZED: string;\n export var LOADIPHLPAPI: string;\n export var ADDRGETNETWORKPARAMS: string;\n export var CANCELLED: string;\n}\n\ndeclare module "net" {\n import * as stream from "stream";\n import * as events from "events";\n import * as dns from "dns";\n\n type LookupFunction = (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void;\n\n export interface SocketConstructorOpts {\n fd?: number;\n allowHalfOpen?: boolean;\n readable?: boolean;\n writable?: boolean;\n }\n\n export interface TcpSocketConnectOpts {\n port: number;\n host?: string;\n localAddress?: string;\n localPort?: number;\n hints?: number;\n family?: number;\n lookup?: LookupFunction;\n }\n\n export interface IpcSocketConnectOpts {\n path: string;\n }\n\n export type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts;\n\n export class Socket extends stream.Duplex {\n constructor(options?: SocketConstructorOpts);\n\n // Extended base methods\n write(buffer: Buffer): boolean;\n write(buffer: Buffer, cb?: Function): boolean;\n write(str: string, cb?: Function): boolean;\n write(str: string, encoding?: string, cb?: Function): boolean;\n write(str: string, encoding?: string, fd?: string): boolean;\n write(data: any, encoding?: string, callback?: Function): void;\n\n connect(options: SocketConnectOpts, connectionListener?: Function): this;\n connect(port: number, host: string, connectionListener?: Function): this;\n connect(port: number, connectionListener?: Function): this;\n connect(path: string, connectionListener?: Function): this;\n\n bufferSize: number;\n setEncoding(encoding?: string): this;\n destroy(err?: any): void;\n pause(): this;\n resume(): this;\n setTimeout(timeout: number, callback?: Function): this;\n setNoDelay(noDelay?: boolean): this;\n setKeepAlive(enable?: boolean, initialDelay?: number): this;\n address(): { port: number; family: string; address: string; };\n unref(): void;\n ref(): void;\n\n remoteAddress?: string;\n remoteFamily?: string;\n remotePort?: number;\n localAddress: string;\n localPort: number;\n bytesRead: number;\n bytesWritten: number;\n connecting: boolean;\n destroyed: boolean;\n\n // Extended base methods\n end(): void;\n end(buffer: Buffer, cb?: Function): void;\n end(str: string, cb?: Function): void;\n end(str: string, encoding?: string, cb?: Function): void;\n end(data?: any, encoding?: string): void;\n\n /**\n * events.EventEmitter\n * 1. close\n * 2. connect\n * 3. data\n * 4. drain\n * 5. end\n * 6. error\n * 7. lookup\n * 8. timeout\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: (had_error: boolean) => void): this;\n addListener(event: "connect", listener: () => void): this;\n addListener(event: "data", listener: (data: Buffer) => void): this;\n addListener(event: "drain", listener: () => void): this;\n addListener(event: "end", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;\n addListener(event: "timeout", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close", had_error: boolean): boolean;\n emit(event: "connect"): boolean;\n emit(event: "data", data: Buffer): boolean;\n emit(event: "drain"): boolean;\n emit(event: "end"): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean;\n emit(event: "timeout"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: (had_error: boolean) => void): this;\n on(event: "connect", listener: () => void): this;\n on(event: "data", listener: (data: Buffer) => void): this;\n on(event: "drain", listener: () => void): this;\n on(event: "end", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;\n on(event: "timeout", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: (had_error: boolean) => void): this;\n once(event: "connect", listener: () => void): this;\n once(event: "data", listener: (data: Buffer) => void): this;\n once(event: "drain", listener: () => void): this;\n once(event: "end", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;\n once(event: "timeout", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: (had_error: boolean) => void): this;\n prependListener(event: "connect", listener: () => void): this;\n prependListener(event: "data", listener: (data: Buffer) => void): this;\n prependListener(event: "drain", listener: () => void): this;\n prependListener(event: "end", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;\n prependListener(event: "timeout", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: (had_error: boolean) => void): this;\n prependOnceListener(event: "connect", listener: () => void): this;\n prependOnceListener(event: "data", listener: (data: Buffer) => void): this;\n prependOnceListener(event: "drain", listener: () => void): this;\n prependOnceListener(event: "end", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;\n prependOnceListener(event: "timeout", listener: () => void): this;\n }\n\n export interface ListenOptions {\n port?: number;\n host?: string;\n backlog?: number;\n path?: string;\n exclusive?: boolean;\n }\n\n // https://github.com/nodejs/node/blob/master/lib/net.js\n export class Server extends events.EventEmitter {\n constructor(connectionListener?: (socket: Socket) => void);\n constructor(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void);\n\n listen(port?: number, hostname?: string, backlog?: number, listeningListener?: Function): this;\n listen(port?: number, hostname?: string, listeningListener?: Function): this;\n listen(port?: number, backlog?: number, listeningListener?: Function): this;\n listen(port?: number, listeningListener?: Function): this;\n listen(path: string, backlog?: number, listeningListener?: Function): this;\n listen(path: string, listeningListener?: Function): this;\n listen(options: ListenOptions, listeningListener?: Function): this;\n listen(handle: any, backlog?: number, listeningListener?: Function): this;\n listen(handle: any, listeningListener?: Function): this;\n close(callback?: Function): this;\n address(): { port: number; family: string; address: string; };\n getConnections(cb: (error: Error | null, count: number) => void): void;\n ref(): this;\n unref(): this;\n maxConnections: number;\n connections: number;\n listening: boolean;\n\n /**\n * events.EventEmitter\n * 1. close\n * 2. connection\n * 3. error\n * 4. listening\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "connection", listener: (socket: Socket) => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "listening", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close"): boolean;\n emit(event: "connection", socket: Socket): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "listening"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "connection", listener: (socket: Socket) => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "listening", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "connection", listener: (socket: Socket) => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "listening", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "connection", listener: (socket: Socket) => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "listening", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "connection", listener: (socket: Socket) => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "listening", listener: () => void): this;\n }\n\n export interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts {\n timeout?: number;\n }\n\n export interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts {\n timeout?: number;\n }\n\n export type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts;\n\n export function createServer(connectionListener?: (socket: Socket) => void): Server;\n export function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server;\n export function connect(options: NetConnectOpts, connectionListener?: Function): Socket;\n export function connect(port: number, host?: string, connectionListener?: Function): Socket;\n export function connect(path: string, connectionListener?: Function): Socket;\n export function createConnection(options: NetConnectOpts, connectionListener?: Function): Socket;\n export function createConnection(port: number, host?: string, connectionListener?: Function): Socket;\n export function createConnection(path: string, connectionListener?: Function): Socket;\n export function isIP(input: string): number;\n export function isIPv4(input: string): boolean;\n export function isIPv6(input: string): boolean;\n}\n\ndeclare module "dgram" {\n import * as events from "events";\n import * as dns from "dns";\n\n interface RemoteInfo {\n address: string;\n family: string;\n port: number;\n }\n\n interface AddressInfo {\n address: string;\n family: string;\n port: number;\n }\n\n interface BindOptions {\n port: number;\n address?: string;\n exclusive?: boolean;\n }\n\n type SocketType = "udp4" | "udp6";\n\n interface SocketOptions {\n type: SocketType;\n reuseAddr?: boolean;\n recvBufferSize?: number;\n sendBufferSize?: number;\n lookup?: (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void) => void;\n }\n\n export function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;\n export function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;\n\n export class Socket extends events.EventEmitter {\n send(msg: Buffer | string | Uint8Array | any[], port: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;\n send(msg: Buffer | string | Uint8Array, offset: number, length: number, port: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;\n bind(port?: number, address?: string, callback?: () => void): void;\n bind(port?: number, callback?: () => void): void;\n bind(callback?: () => void): void;\n bind(options: BindOptions, callback?: Function): void;\n close(callback?: () => void): void;\n address(): AddressInfo;\n setBroadcast(flag: boolean): void;\n setTTL(ttl: number): void;\n setMulticastTTL(ttl: number): void;\n setMulticastInterface(multicastInterface: string): void;\n setMulticastLoopback(flag: boolean): void;\n addMembership(multicastAddress: string, multicastInterface?: string): void;\n dropMembership(multicastAddress: string, multicastInterface?: string): void;\n ref(): this;\n unref(): this;\n setRecvBufferSize(size: number): void;\n setSendBufferSize(size: number): void;\n getRecvBufferSize(): number;\n getSendBufferSize(): number;\n\n /**\n * events.EventEmitter\n * 1. close\n * 2. error\n * 3. listening\n * 4. message\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "listening", listener: () => void): this;\n addListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close"): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "listening"): boolean;\n emit(event: "message", msg: Buffer, rinfo: AddressInfo): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "listening", listener: () => void): this;\n on(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "listening", listener: () => void): this;\n once(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "listening", listener: () => void): this;\n prependListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "listening", listener: () => void): this;\n prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this;\n }\n}\n\ndeclare module "fs" {\n import * as stream from "stream";\n import * as events from "events";\n import { URL } from "url";\n\n /**\n * Valid types for path values in "fs".\n */\n export type PathLike = string | Buffer | URL;\n\n export class Stats {\n isFile(): boolean;\n isDirectory(): boolean;\n isBlockDevice(): boolean;\n isCharacterDevice(): boolean;\n isSymbolicLink(): boolean;\n isFIFO(): boolean;\n isSocket(): boolean;\n dev: number;\n ino: number;\n mode: number;\n nlink: number;\n uid: number;\n gid: number;\n rdev: number;\n size: number;\n blksize: number;\n blocks: number;\n atimeMs: number;\n mtimeMs: number;\n ctimeMs: number;\n birthtimeMs: number;\n atime: Date;\n mtime: Date;\n ctime: Date;\n birthtime: Date;\n }\n\n export interface FSWatcher extends events.EventEmitter {\n close(): void;\n\n /**\n * events.EventEmitter\n * 1. change\n * 2. error\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;\n addListener(event: "error", listener: (error: Error) => void): this;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;\n on(event: "error", listener: (error: Error) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;\n once(event: "error", listener: (error: Error) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;\n prependListener(event: "error", listener: (error: Error) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;\n prependOnceListener(event: "error", listener: (error: Error) => void): this;\n }\n\n export class ReadStream extends stream.Readable {\n close(): void;\n destroy(): void;\n bytesRead: number;\n path: string | Buffer;\n\n /**\n * events.EventEmitter\n * 1. open\n * 2. close\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "open", listener: (fd: number) => void): this;\n addListener(event: "close", listener: () => void): this;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "open", listener: (fd: number) => void): this;\n on(event: "close", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "open", listener: (fd: number) => void): this;\n once(event: "close", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "open", listener: (fd: number) => void): this;\n prependListener(event: "close", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "open", listener: (fd: number) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n }\n\n export class WriteStream extends stream.Writable {\n close(): void;\n bytesWritten: number;\n path: string | Buffer;\n\n /**\n * events.EventEmitter\n * 1. open\n * 2. close\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "open", listener: (fd: number) => void): this;\n addListener(event: "close", listener: () => void): this;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "open", listener: (fd: number) => void): this;\n on(event: "close", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "open", listener: (fd: number) => void): this;\n once(event: "close", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "open", listener: (fd: number) => void): this;\n prependListener(event: "close", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "open", listener: (fd: number) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n }\n\n /**\n * Asynchronous rename(2) - Change the name or location of a file or directory.\n * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function rename(oldPath: PathLike, newPath: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace rename {\n /**\n * Asynchronous rename(2) - Change the name or location of a file or directory.\n * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function __promisify__(oldPath: PathLike, newPath: PathLike): Promise;\n }\n\n /**\n * Synchronous rename(2) - Change the name or location of a file or directory.\n * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function renameSync(oldPath: PathLike, newPath: PathLike): void;\n\n /**\n * Asynchronous truncate(2) - Truncate a file to a specified length.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param len If not specified, defaults to `0`.\n */\n export function truncate(path: PathLike, len: number | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronous truncate(2) - Truncate a file to a specified length.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function truncate(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace truncate {\n /**\n * Asynchronous truncate(2) - Truncate a file to a specified length.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param len If not specified, defaults to `0`.\n */\n export function __promisify__(path: PathLike, len?: number | null): Promise;\n }\n\n /**\n * Synchronous truncate(2) - Truncate a file to a specified length.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param len If not specified, defaults to `0`.\n */\n export function truncateSync(path: PathLike, len?: number | null): void;\n\n /**\n * Asynchronous ftruncate(2) - Truncate a file to a specified length.\n * @param fd A file descriptor.\n * @param len If not specified, defaults to `0`.\n */\n export function ftruncate(fd: number, len: number | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronous ftruncate(2) - Truncate a file to a specified length.\n * @param fd A file descriptor.\n */\n export function ftruncate(fd: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace ftruncate {\n /**\n * Asynchronous ftruncate(2) - Truncate a file to a specified length.\n * @param fd A file descriptor.\n * @param len If not specified, defaults to `0`.\n */\n export function __promisify__(fd: number, len?: number | null): Promise;\n }\n\n /**\n * Synchronous ftruncate(2) - Truncate a file to a specified length.\n * @param fd A file descriptor.\n * @param len If not specified, defaults to `0`.\n */\n export function ftruncateSync(fd: number, len?: number | null): void;\n\n /**\n * Asynchronous chown(2) - Change ownership of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function chown(path: PathLike, uid: number, gid: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace chown {\n /**\n * Asynchronous chown(2) - Change ownership of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function __promisify__(path: PathLike, uid: number, gid: number): Promise;\n }\n\n /**\n * Synchronous chown(2) - Change ownership of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function chownSync(path: PathLike, uid: number, gid: number): void;\n\n /**\n * Asynchronous fchown(2) - Change ownership of a file.\n * @param fd A file descriptor.\n */\n export function fchown(fd: number, uid: number, gid: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace fchown {\n /**\n * Asynchronous fchown(2) - Change ownership of a file.\n * @param fd A file descriptor.\n */\n export function __promisify__(fd: number, uid: number, gid: number): Promise;\n }\n\n /**\n * Synchronous fchown(2) - Change ownership of a file.\n * @param fd A file descriptor.\n */\n export function fchownSync(fd: number, uid: number, gid: number): void;\n\n /**\n * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function lchown(path: PathLike, uid: number, gid: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace lchown {\n /**\n * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function __promisify__(path: PathLike, uid: number, gid: number): Promise;\n }\n\n /**\n * Synchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function lchownSync(path: PathLike, uid: number, gid: number): void;\n\n /**\n * Asynchronous chmod(2) - Change permissions of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function chmod(path: PathLike, mode: string | number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace chmod {\n /**\n * Asynchronous chmod(2) - Change permissions of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function __promisify__(path: PathLike, mode: string | number): Promise;\n }\n\n /**\n * Synchronous chmod(2) - Change permissions of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function chmodSync(path: PathLike, mode: string | number): void;\n\n /**\n * Asynchronous fchmod(2) - Change permissions of a file.\n * @param fd A file descriptor.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function fchmod(fd: number, mode: string | number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace fchmod {\n /**\n * Asynchronous fchmod(2) - Change permissions of a file.\n * @param fd A file descriptor.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function __promisify__(fd: number, mode: string | number): Promise;\n }\n\n /**\n * Synchronous fchmod(2) - Change permissions of a file.\n * @param fd A file descriptor.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function fchmodSync(fd: number, mode: string | number): void;\n\n /**\n * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function lchmod(path: PathLike, mode: string | number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace lchmod {\n /**\n * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function __promisify__(path: PathLike, mode: string | number): Promise;\n }\n\n /**\n * Synchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer.\n */\n export function lchmodSync(path: PathLike, mode: string | number): void;\n\n /**\n * Asynchronous stat(2) - Get file status.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function stat(path: PathLike, callback: (err: NodeJS.ErrnoException, stats: Stats) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace stat {\n /**\n * Asynchronous stat(2) - Get file status.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function __promisify__(path: PathLike): Promise;\n }\n\n /**\n * Synchronous stat(2) - Get file status.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function statSync(path: PathLike): Stats;\n\n /**\n * Asynchronous fstat(2) - Get file status.\n * @param fd A file descriptor.\n */\n export function fstat(fd: number, callback: (err: NodeJS.ErrnoException, stats: Stats) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace fstat {\n /**\n * Asynchronous fstat(2) - Get file status.\n * @param fd A file descriptor.\n */\n export function __promisify__(fd: number): Promise;\n }\n\n /**\n * Synchronous fstat(2) - Get file status.\n * @param fd A file descriptor.\n */\n export function fstatSync(fd: number): Stats;\n\n /**\n * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException, stats: Stats) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace lstat {\n /**\n * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function __promisify__(path: PathLike): Promise;\n }\n\n /**\n * Synchronous lstat(2) - Get file status. Does not dereference symbolic links.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function lstatSync(path: PathLike): Stats;\n\n /**\n * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.\n * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function link(existingPath: PathLike, newPath: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace link {\n /**\n * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.\n * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function link(existingPath: PathLike, newPath: PathLike): Promise;\n }\n\n /**\n * Synchronous link(2) - Create a new link (also known as a hard link) to an existing file.\n * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function linkSync(existingPath: PathLike, newPath: PathLike): void;\n\n /**\n * Asynchronous symlink(2) - Create a new symbolic link to an existing file.\n * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.\n * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.\n * @param type May be set to `\'dir\'`, `\'file\'`, or `\'junction\'` (default is `\'file\'`) and is only available on Windows (ignored on other platforms).\n * When using `\'junction\'`, the `target` argument will automatically be normalized to an absolute path.\n */\n export function symlink(target: PathLike, path: PathLike, type: symlink.Type | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronous symlink(2) - Create a new symbolic link to an existing file.\n * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.\n * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.\n */\n export function symlink(target: PathLike, path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace symlink {\n /**\n * Asynchronous symlink(2) - Create a new symbolic link to an existing file.\n * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.\n * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.\n * @param type May be set to `\'dir\'`, `\'file\'`, or `\'junction\'` (default is `\'file\'`) and is only available on Windows (ignored on other platforms).\n * When using `\'junction\'`, the `target` argument will automatically be normalized to an absolute path.\n */\n export function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise;\n\n export type Type = "dir" | "file" | "junction";\n }\n\n /**\n * Synchronous symlink(2) - Create a new symbolic link to an existing file.\n * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.\n * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.\n * @param type May be set to `\'dir\'`, `\'file\'`, or `\'junction\'` (default is `\'file\'`) and is only available on Windows (ignored on other platforms).\n * When using `\'junction\'`, the `target` argument will automatically be normalized to an absolute path.\n */\n export function symlinkSync(target: PathLike, path: PathLike, type?: symlink.Type | null): void;\n\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readlink(path: PathLike, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, linkString: string) => void): void;\n\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readlink(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, linkString: Buffer) => void): void;\n\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readlink(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, linkString: string | Buffer) => void): void;\n\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function readlink(path: PathLike, callback: (err: NodeJS.ErrnoException, linkString: string) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace readlink {\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise;\n\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise;\n\n /**\n * Asynchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise;\n }\n\n /**\n * Synchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readlinkSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;\n\n /**\n * Synchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readlinkSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;\n\n /**\n * Synchronous readlink(2) - read value of a symbolic link.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readlinkSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;\n\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function realpath(path: PathLike, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => void): void;\n\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function realpath(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, resolvedPath: Buffer) => void): void;\n\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function realpath(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, resolvedPath: string | Buffer) => void): void;\n\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function realpath(path: PathLike, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace realpath {\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise;\n\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise;\n\n /**\n * Asynchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise;\n }\n\n /**\n * Synchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function realpathSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;\n\n /**\n * Synchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function realpathSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;\n\n /**\n * Synchronous realpath(3) - return the canonicalized absolute pathname.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function realpathSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;\n\n /**\n * Asynchronous unlink(2) - delete a name and possibly the file it refers to.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function unlink(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace unlink {\n /**\n * Asynchronous unlink(2) - delete a name and possibly the file it refers to.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function __promisify__(path: PathLike): Promise;\n }\n\n /**\n * Synchronous unlink(2) - delete a name and possibly the file it refers to.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function unlinkSync(path: PathLike): void;\n\n /**\n * Asynchronous rmdir(2) - delete a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function rmdir(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace rmdir {\n /**\n * Asynchronous rmdir(2) - delete a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function __promisify__(path: PathLike): Promise;\n }\n\n /**\n * Synchronous rmdir(2) - delete a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function rmdirSync(path: PathLike): void;\n\n /**\n * Asynchronous mkdir(2) - create a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.\n */\n export function mkdir(path: PathLike, mode: number | string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronous mkdir(2) - create a directory with a mode of `0o777`.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function mkdir(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace mkdir {\n /**\n * Asynchronous mkdir(2) - create a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.\n */\n export function __promisify__(path: PathLike, mode?: number | string | null): Promise;\n }\n\n /**\n * Synchronous mkdir(2) - create a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.\n */\n export function mkdirSync(path: PathLike, mode?: number | string | null): void;\n\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function mkdtemp(prefix: string, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, folder: string) => void): void;\n\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function mkdtemp(prefix: string, options: "buffer" | { encoding: "buffer" }, callback: (err: NodeJS.ErrnoException, folder: Buffer) => void): void;\n\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function mkdtemp(prefix: string, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, folder: string | Buffer) => void): void;\n\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n */\n export function mkdtemp(prefix: string, callback: (err: NodeJS.ErrnoException, folder: string) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace mkdtemp {\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise;\n\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(prefix: string, options: { encoding: "buffer" } | "buffer"): Promise;\n\n /**\n * Asynchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(prefix: string, options?: { encoding?: string | null } | string | null): Promise;\n }\n\n /**\n * Synchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function mkdtempSync(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;\n\n /**\n * Synchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function mkdtempSync(prefix: string, options: { encoding: "buffer" } | "buffer"): Buffer;\n\n /**\n * Synchronously creates a unique temporary directory.\n * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function mkdtempSync(prefix: string, options?: { encoding?: string | null } | string | null): string | Buffer;\n\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readdir(path: PathLike, options: { encoding: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void;\n\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readdir(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, files: Buffer[]) => void): void;\n\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readdir(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, files: string[] | Buffer[]) => void): void;\n\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function readdir(path: PathLike, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace readdir {\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options?: { encoding: BufferEncoding | null } | BufferEncoding | null): Promise;\n\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options: "buffer" | { encoding: "buffer" }): Promise;\n\n /**\n * Asynchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise;\n }\n\n /**\n * Synchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readdirSync(path: PathLike, options?: { encoding: BufferEncoding | null } | BufferEncoding | null): string[];\n\n /**\n * Synchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readdirSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer[];\n\n /**\n * Synchronous readdir(3) - read a directory.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `\'utf8\'` is used.\n */\n export function readdirSync(path: PathLike, options?: { encoding?: string | null } | string | null): string[] | Buffer[];\n\n /**\n * Asynchronous close(2) - close a file descriptor.\n * @param fd A file descriptor.\n */\n export function close(fd: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace close {\n /**\n * Asynchronous close(2) - close a file descriptor.\n * @param fd A file descriptor.\n */\n export function __promisify__(fd: number): Promise;\n }\n\n /**\n * Synchronous close(2) - close a file descriptor.\n * @param fd A file descriptor.\n */\n export function closeSync(fd: number): void;\n\n /**\n * Asynchronous open(2) - open and possibly create a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.\n */\n export function open(path: PathLike, flags: string | number, mode: string | number | undefined | null, callback: (err: NodeJS.ErrnoException, fd: number) => void): void;\n\n /**\n * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n */\n export function open(path: PathLike, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace open {\n /**\n * Asynchronous open(2) - open and possibly create a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.\n */\n export function __promisify__(path: PathLike, flags: string | number, mode?: string | number | null): Promise;\n }\n\n /**\n * Synchronous open(2) - open and possibly create a file, returning a file descriptor..\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.\n */\n export function openSync(path: PathLike, flags: string | number, mode?: string | number | null): number;\n\n /**\n * Asynchronously change file timestamps of the file referenced by the supplied path.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param atime The last access time. If a string is provided, it will be coerced to number.\n * @param mtime The last modified time. If a string is provided, it will be coerced to number.\n */\n export function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace utimes {\n /**\n * Asynchronously change file timestamps of the file referenced by the supplied path.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param atime The last access time. If a string is provided, it will be coerced to number.\n * @param mtime The last modified time. If a string is provided, it will be coerced to number.\n */\n export function __promisify__(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise;\n }\n\n /**\n * Synchronously change file timestamps of the file referenced by the supplied path.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * @param atime The last access time. If a string is provided, it will be coerced to number.\n * @param mtime The last modified time. If a string is provided, it will be coerced to number.\n */\n export function utimesSync(path: PathLike, atime: string | number | Date, mtime: string | number | Date): void;\n\n /**\n * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param atime The last access time. If a string is provided, it will be coerced to number.\n * @param mtime The last modified time. If a string is provided, it will be coerced to number.\n */\n export function futimes(fd: number, atime: string | number | Date, mtime: string | number | Date, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace futimes {\n /**\n * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param atime The last access time. If a string is provided, it will be coerced to number.\n * @param mtime The last modified time. If a string is provided, it will be coerced to number.\n */\n export function __promisify__(fd: number, atime: string | number | Date, mtime: string | number | Date): Promise;\n }\n\n /**\n * Synchronously change file timestamps of the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param atime The last access time. If a string is provided, it will be coerced to number.\n * @param mtime The last modified time. If a string is provided, it will be coerced to number.\n */\n export function futimesSync(fd: number, atime: string | number | Date, mtime: string | number | Date): void;\n\n /**\n * Asynchronous fsync(2) - synchronize a file\'s in-core state with the underlying storage device.\n * @param fd A file descriptor.\n */\n export function fsync(fd: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace fsync {\n /**\n * Asynchronous fsync(2) - synchronize a file\'s in-core state with the underlying storage device.\n * @param fd A file descriptor.\n */\n export function __promisify__(fd: number): Promise;\n }\n\n /**\n * Synchronous fsync(2) - synchronize a file\'s in-core state with the underlying storage device.\n * @param fd A file descriptor.\n */\n export function fsyncSync(fd: number): void;\n\n /**\n * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.\n * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n */\n export function write(fd: number, buffer: TBuffer, offset: number | undefined | null, length: number | undefined | null, position: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void;\n\n /**\n * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.\n * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.\n */\n export function write(fd: number, buffer: TBuffer, offset: number | undefined | null, length: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void;\n\n /**\n * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.\n */\n export function write(fd: number, buffer: TBuffer, offset: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void;\n\n /**\n * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n */\n export function write(fd: number, buffer: TBuffer, callback: (err: NodeJS.ErrnoException, written: number, buffer: TBuffer) => void): void;\n\n /**\n * Asynchronously writes `string` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param string A string to write. If something other than a string is supplied it will be coerced to a string.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n * @param encoding The expected string encoding.\n */\n export function write(fd: number, string: any, position: number | undefined | null, encoding: string | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, str: string) => void): void;\n\n /**\n * Asynchronously writes `string` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param string A string to write. If something other than a string is supplied it will be coerced to a string.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n */\n export function write(fd: number, string: any, position: number | undefined | null, callback: (err: NodeJS.ErrnoException, written: number, str: string) => void): void;\n\n /**\n * Asynchronously writes `string` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param string A string to write. If something other than a string is supplied it will be coerced to a string.\n */\n export function write(fd: number, string: any, callback: (err: NodeJS.ErrnoException, written: number, str: string) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace write {\n /**\n * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.\n * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n */\n export function __promisify__(fd: number, buffer?: TBuffer, offset?: number, length?: number, position?: number | null): Promise<{ bytesWritten: number, buffer: TBuffer }>;\n\n /**\n * Asynchronously writes `string` to the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param string A string to write. If something other than a string is supplied it will be coerced to a string.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n * @param encoding The expected string encoding.\n */\n export function __promisify__(fd: number, string: any, position?: number | null, encoding?: string | null): Promise<{ bytesWritten: number, buffer: string }>;\n }\n\n /**\n * Synchronously writes `buffer` to the file referenced by the supplied file descriptor, returning the number of bytes written.\n * @param fd A file descriptor.\n * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.\n * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n */\n export function writeSync(fd: number, buffer: Buffer | Uint8Array, offset?: number | null, length?: number | null, position?: number | null): number;\n\n /**\n * Synchronously writes `string` to the file referenced by the supplied file descriptor, returning the number of bytes written.\n * @param fd A file descriptor.\n * @param string A string to write. If something other than a string is supplied it will be coerced to a string.\n * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.\n * @param encoding The expected string encoding.\n */\n export function writeSync(fd: number, string: any, position?: number | null, encoding?: string | null): number;\n\n /**\n * Asynchronously reads data from the file referenced by the supplied file descriptor.\n * @param fd A file descriptor.\n * @param buffer The buffer that the data will be written to.\n * @param offset The offset in the buffer at which to start writing.\n * @param length The number of bytes to read.\n * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.\n */\n export function read(fd: number, buffer: TBuffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, bytesRead: number, buffer: TBuffer) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace read {\n /**\n * @param fd A file descriptor.\n * @param buffer The buffer that the data will be written to.\n * @param offset The offset in the buffer at which to start writing.\n * @param length The number of bytes to read.\n * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.\n */\n export function __promisify__(fd: number, buffer: TBuffer, offset: number, length: number, position: number | null): Promise<{ bytesRead: number, buffer: TBuffer }>;\n }\n\n /**\n * Synchronously reads data from the file referenced by the supplied file descriptor, returning the number of bytes read.\n * @param fd A file descriptor.\n * @param buffer The buffer that the data will be written to.\n * @param offset The offset in the buffer at which to start writing.\n * @param length The number of bytes to read.\n * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.\n */\n export function readSync(fd: number, buffer: Buffer | Uint8Array, offset: number, length: number, position: number | null): number;\n\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options An object that may contain an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function readFile(path: PathLike | number, options: { encoding?: null; flag?: string; } | undefined | null, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void;\n\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function readFile(path: PathLike | number, options: { encoding: string; flag?: string; } | string, callback: (err: NodeJS.ErrnoException, data: string) => void): void;\n\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function readFile(path: PathLike | number, options: { encoding?: string | null; flag?: string; } | string | undefined | null, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void;\n\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n */\n export function readFile(path: PathLike | number, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace readFile {\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options An object that may contain an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function __promisify__(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Promise;\n\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function __promisify__(path: PathLike | number, options: { encoding: string; flag?: string; } | string): Promise;\n\n /**\n * Asynchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function __promisify__(path: PathLike | number, options?: { encoding?: string | null; flag?: string; } | string | null): Promise;\n }\n\n /**\n * Synchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options An object that may contain an optional flag. If a flag is not provided, it defaults to `\'r\'`.\n */\n export function readFileSync(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Buffer;\n\n /**\n * Synchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function readFileSync(path: PathLike | number, options: { encoding: string; flag?: string; } | string): string;\n\n /**\n * Synchronously reads the entire contents of a file.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.\n * If a flag is not provided, it defaults to `\'r\'`.\n */\n export function readFileSync(path: PathLike | number, options?: { encoding?: string | null; flag?: string; } | string | null): string | Buffer;\n\n /**\n * Asynchronously writes data to a file, replacing the file if it already exists.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `mode` is not supplied, the default of `0o666` is used.\n * If `mode` is a string, it is parsed as an octal integer.\n * If `flag` is not supplied, the default of `\'w\'` is used.\n */\n export function writeFile(path: PathLike | number, data: any, options: { encoding?: string | null; mode?: number | string; flag?: string; } | string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronously writes data to a file, replacing the file if it already exists.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n */\n export function writeFile(path: PathLike | number, data: any, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace writeFile {\n /**\n * Asynchronously writes data to a file, replacing the file if it already exists.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `mode` is not supplied, the default of `0o666` is used.\n * If `mode` is a string, it is parsed as an octal integer.\n * If `flag` is not supplied, the default of `\'w\'` is used.\n */\n export function __promisify__(path: PathLike | number, data: any, options?: { encoding?: string | null; mode?: number | string; flag?: string; } | string | null): Promise;\n }\n\n /**\n * Synchronously writes data to a file, replacing the file if it already exists.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `mode` is not supplied, the default of `0o666` is used.\n * If `mode` is a string, it is parsed as an octal integer.\n * If `flag` is not supplied, the default of `\'w\'` is used.\n */\n export function writeFileSync(path: PathLike | number, data: any, options?: { encoding?: string | null; mode?: number | string; flag?: string; } | string | null): void;\n\n /**\n * Asynchronously append data to a file, creating the file if it does not exist.\n * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `mode` is not supplied, the default of `0o666` is used.\n * If `mode` is a string, it is parsed as an octal integer.\n * If `flag` is not supplied, the default of `\'a\'` is used.\n */\n export function appendFile(file: PathLike | number, data: any, options: { encoding?: string | null, mode?: string | number, flag?: string } | string | undefined | null, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronously append data to a file, creating the file if it does not exist.\n * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n */\n export function appendFile(file: PathLike | number, data: any, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace appendFile {\n /**\n * Asynchronously append data to a file, creating the file if it does not exist.\n * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `mode` is not supplied, the default of `0o666` is used.\n * If `mode` is a string, it is parsed as an octal integer.\n * If `flag` is not supplied, the default of `\'a\'` is used.\n */\n export function __promisify__(file: PathLike | number, data: any, options?: { encoding?: string | null, mode?: string | number, flag?: string } | string | null): Promise;\n }\n\n /**\n * Synchronously append data to a file, creating the file if it does not exist.\n * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * If a file descriptor is provided, the underlying file will _not_ be closed automatically.\n * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.\n * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `mode` is not supplied, the default of `0o666` is used.\n * If `mode` is a string, it is parsed as an octal integer.\n * If `flag` is not supplied, the default of `\'a\'` is used.\n */\n export function appendFileSync(file: PathLike | number, data: any, options?: { encoding?: string | null; mode?: number | string; flag?: string; } | string | null): void;\n\n /**\n * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed.\n */\n export function watchFile(filename: PathLike, options: { persistent?: boolean; interval?: number; } | undefined, listener: (curr: Stats, prev: Stats) => void): void;\n\n /**\n * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed.\n * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function watchFile(filename: PathLike, listener: (curr: Stats, prev: Stats) => void): void;\n\n /**\n * Stop watching for changes on `filename`.\n * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function unwatchFile(filename: PathLike, listener?: (curr: Stats, prev: Stats) => void): void;\n\n /**\n * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.\n * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `persistent` is not supplied, the default of `true` is used.\n * If `recursive` is not supplied, the default of `false` is used.\n */\n export function watch(filename: PathLike, options: { encoding?: BufferEncoding | null, persistent?: boolean, recursive?: boolean } | BufferEncoding | undefined | null, listener?: (event: string, filename: string) => void): FSWatcher;\n\n /**\n * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.\n * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `persistent` is not supplied, the default of `true` is used.\n * If `recursive` is not supplied, the default of `false` is used.\n */\n export function watch(filename: PathLike, options: { encoding: "buffer", persistent?: boolean, recursive?: boolean } | "buffer", listener?: (event: string, filename: Buffer) => void): FSWatcher;\n\n /**\n * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.\n * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.\n * If `encoding` is not supplied, the default of `\'utf8\'` is used.\n * If `persistent` is not supplied, the default of `true` is used.\n * If `recursive` is not supplied, the default of `false` is used.\n */\n export function watch(filename: PathLike, options: { encoding?: string | null, persistent?: boolean, recursive?: boolean } | string | null, listener?: (event: string, filename: string | Buffer) => void): FSWatcher;\n\n /**\n * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.\n * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function watch(filename: PathLike, listener?: (event: string, filename: string) => any): FSWatcher;\n\n /**\n * Asynchronously tests whether or not the given path exists by checking with the file system.\n * @deprecated\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function exists(path: PathLike, callback: (exists: boolean) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace exists {\n /**\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n function __promisify__(path: PathLike): Promise;\n }\n\n /**\n * Synchronously tests whether or not the given path exists by checking with the file system.\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function existsSync(path: PathLike): boolean;\n\n export namespace constants {\n // File Access Constants\n\n /** Constant for fs.access(). File is visible to the calling process. */\n export const F_OK: number;\n\n /** Constant for fs.access(). File can be read by the calling process. */\n export const R_OK: number;\n\n /** Constant for fs.access(). File can be written by the calling process. */\n export const W_OK: number;\n\n /** Constant for fs.access(). File can be executed by the calling process. */\n export const X_OK: number;\n\n // File Open Constants\n\n /** Constant for fs.open(). Flag indicating to open a file for read-only access. */\n export const O_RDONLY: number;\n\n /** Constant for fs.open(). Flag indicating to open a file for write-only access. */\n export const O_WRONLY: number;\n\n /** Constant for fs.open(). Flag indicating to open a file for read-write access. */\n export const O_RDWR: number;\n\n /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */\n export const O_CREAT: number;\n\n /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */\n export const O_EXCL: number;\n\n /** Constant for fs.open(). Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one). */\n export const O_NOCTTY: number;\n\n /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */\n export const O_TRUNC: number;\n\n /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */\n export const O_APPEND: number;\n\n /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */\n export const O_DIRECTORY: number;\n\n /** Constant for fs.open(). Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only. */\n export const O_NOATIME: number;\n\n /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */\n export const O_NOFOLLOW: number;\n\n /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */\n export const O_SYNC: number;\n\n /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O with write operations waiting for data integrity. */\n export const O_DSYNC: number;\n\n /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */\n export const O_SYMLINK: number;\n\n /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */\n export const O_DIRECT: number;\n\n /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */\n export const O_NONBLOCK: number;\n\n // File Type Constants\n\n /** Constant for fs.Stats mode property for determining a file\'s type. Bit mask used to extract the file type code. */\n export const S_IFMT: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a regular file. */\n export const S_IFREG: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a directory. */\n export const S_IFDIR: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a character-oriented device file. */\n export const S_IFCHR: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a block-oriented device file. */\n export const S_IFBLK: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a FIFO/pipe. */\n export const S_IFIFO: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a symbolic link. */\n export const S_IFLNK: number;\n\n /** Constant for fs.Stats mode property for determining a file\'s type. File type constant for a socket. */\n export const S_IFSOCK: number;\n\n // File Mode Constants\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */\n export const S_IRWXU: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */\n export const S_IRUSR: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */\n export const S_IWUSR: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */\n export const S_IXUSR: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */\n export const S_IRWXG: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */\n export const S_IRGRP: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */\n export const S_IWGRP: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */\n export const S_IXGRP: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */\n export const S_IRWXO: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */\n export const S_IROTH: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */\n export const S_IWOTH: number;\n\n /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */\n export const S_IXOTH: number;\n\n /** Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists. */\n export const COPYFILE_EXCL: number;\n }\n\n /**\n * Asynchronously tests a user\'s permissions for the file specified by path.\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function access(path: PathLike, mode: number | undefined, callback: (err: NodeJS.ErrnoException) => void): void;\n\n /**\n * Asynchronously tests a user\'s permissions for the file specified by path.\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function access(path: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace access {\n /**\n * Asynchronously tests a user\'s permissions for the file specified by path.\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function __promisify__(path: PathLike, mode?: number): Promise;\n }\n\n /**\n * Synchronously tests a user\'s permissions for the file specified by path.\n * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function accessSync(path: PathLike, mode?: number): void;\n\n /**\n * Returns a new `ReadStream` object.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function createReadStream(path: PathLike, options?: string | {\n flags?: string;\n encoding?: string;\n fd?: number;\n mode?: number;\n autoClose?: boolean;\n start?: number;\n end?: number;\n highWaterMark?: number;\n }): ReadStream;\n\n /**\n * Returns a new `WriteStream` object.\n * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.\n * URL support is _experimental_.\n */\n export function createWriteStream(path: PathLike, options?: string | {\n flags?: string;\n encoding?: string;\n fd?: number;\n mode?: number;\n autoClose?: boolean;\n start?: number;\n }): WriteStream;\n\n /**\n * Asynchronous fdatasync(2) - synchronize a file\'s in-core state with storage device.\n * @param fd A file descriptor.\n */\n export function fdatasync(fd: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace fdatasync {\n /**\n * Asynchronous fdatasync(2) - synchronize a file\'s in-core state with storage device.\n * @param fd A file descriptor.\n */\n export function __promisify__(fd: number): Promise;\n }\n\n /**\n * Synchronous fdatasync(2) - synchronize a file\'s in-core state with storage device.\n * @param fd A file descriptor.\n */\n export function fdatasyncSync(fd: number): void;\n\n /**\n * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.\n * No arguments other than a possible exception are given to the callback function.\n * Node.js makes no guarantees about the atomicity of the copy operation.\n * If an error occurs after the destination file has been opened for writing, Node.js will attempt\n * to remove the destination.\n * @param src A path to the source file.\n * @param dest A path to the destination file.\n */\n export function copyFile(src: PathLike, dest: PathLike, callback: (err: NodeJS.ErrnoException) => void): void;\n /**\n * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.\n * No arguments other than a possible exception are given to the callback function.\n * Node.js makes no guarantees about the atomicity of the copy operation.\n * If an error occurs after the destination file has been opened for writing, Node.js will attempt\n * to remove the destination.\n * @param src A path to the source file.\n * @param dest A path to the destination file.\n * @param flags An integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists.\n */\n export function copyFile(src: PathLike, dest: PathLike, flags: number, callback: (err: NodeJS.ErrnoException) => void): void;\n\n // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.\n export namespace copyFile {\n /**\n * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.\n * No arguments other than a possible exception are given to the callback function.\n * Node.js makes no guarantees about the atomicity of the copy operation.\n * If an error occurs after the destination file has been opened for writing, Node.js will attempt\n * to remove the destination.\n * @param src A path to the source file.\n * @param dest A path to the destination file.\n * @param flags An optional integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists.\n */\n export function __promisify__(src: PathLike, dst: PathLike, flags?: number): Promise;\n }\n\n /**\n * Synchronously copies src to dest. By default, dest is overwritten if it already exists.\n * Node.js makes no guarantees about the atomicity of the copy operation.\n * If an error occurs after the destination file has been opened for writing, Node.js will attempt\n * to remove the destination.\n * @param src A path to the source file.\n * @param dest A path to the destination file.\n * @param flags An optional integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists.\n */\n export function copyFileSync(src: PathLike, dest: PathLike, flags?: number): void;\n}\n\ndeclare module "path" {\n /**\n * A parsed path object generated by path.parse() or consumed by path.format().\n */\n export interface ParsedPath {\n /**\n * The root of the path such as \'/\' or \'c:\\\'\n */\n root: string;\n /**\n * The full directory path such as \'/home/user/dir\' or \'c:\\path\\dir\'\n */\n dir: string;\n /**\n * The file name including extension (if any) such as \'index.html\'\n */\n base: string;\n /**\n * The file extension (if any) such as \'.html\'\n */\n ext: string;\n /**\n * The file name without extension (if any) such as \'index\'\n */\n name: string;\n }\n export interface FormatInputPathObject {\n /**\n * The root of the path such as \'/\' or \'c:\\\'\n */\n root?: string;\n /**\n * The full directory path such as \'/home/user/dir\' or \'c:\\path\\dir\'\n */\n dir?: string;\n /**\n * The file name including extension (if any) such as \'index.html\'\n */\n base?: string;\n /**\n * The file extension (if any) such as \'.html\'\n */\n ext?: string;\n /**\n * The file name without extension (if any) such as \'index\'\n */\n name?: string;\n }\n\n /**\n * Normalize a string path, reducing \'..\' and \'.\' parts.\n * When multiple slashes are found, they\'re replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used.\n *\n * @param p string path to normalize.\n */\n export function normalize(p: string): string;\n /**\n * Join all arguments together and normalize the resulting path.\n * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown.\n *\n * @param paths paths to join.\n */\n export function join(...paths: string[]): string;\n /**\n * The right-most parameter is considered {to}. Other parameters are considered an array of {from}.\n *\n * Starting from leftmost {from} paramter, resolves {to} to an absolute path.\n *\n * If {to} isn\'t already absolute, {from} arguments are prepended in right to left order, until an absolute path is found. If after using all {from} paths still no absolute path is found, the current working directory is used as well. The resulting path is normalized, and trailing slashes are removed unless the path gets resolved to the root directory.\n *\n * @param pathSegments string paths to join. Non-string arguments are ignored.\n */\n export function resolve(...pathSegments: string[]): string;\n /**\n * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory.\n *\n * @param path path to test.\n */\n export function isAbsolute(path: string): boolean;\n /**\n * Solve the relative path from {from} to {to}.\n * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve.\n */\n export function relative(from: string, to: string): string;\n /**\n * Return the directory name of a path. Similar to the Unix dirname command.\n *\n * @param p the path to evaluate.\n */\n export function dirname(p: string): string;\n /**\n * Return the last portion of a path. Similar to the Unix basename command.\n * Often used to extract the file name from a fully qualified path.\n *\n * @param p the path to evaluate.\n * @param ext optionally, an extension to remove from the result.\n */\n export function basename(p: string, ext?: string): string;\n /**\n * Return the extension of the path, from the last \'.\' to end of string in the last portion of the path.\n * If there is no \'.\' in the last portion of the path or the first character of it is \'.\', then it returns an empty string\n *\n * @param p the path to evaluate.\n */\n export function extname(p: string): string;\n /**\n * The platform-specific file separator. \'\\\\\' or \'/\'.\n */\n export var sep: \'\\\\\' | \'/\';\n /**\n * The platform-specific file delimiter. \';\' or \':\'.\n */\n export var delimiter: \';\' | \':\';\n /**\n * Returns an object from a path string - the opposite of format().\n *\n * @param pathString path to evaluate.\n */\n export function parse(pathString: string): ParsedPath;\n /**\n * Returns a path string from an object - the opposite of parse().\n *\n * @param pathString path to evaluate.\n */\n export function format(pathObject: FormatInputPathObject): string;\n\n export module posix {\n export function normalize(p: string): string;\n export function join(...paths: any[]): string;\n export function resolve(...pathSegments: any[]): string;\n export function isAbsolute(p: string): boolean;\n export function relative(from: string, to: string): string;\n export function dirname(p: string): string;\n export function basename(p: string, ext?: string): string;\n export function extname(p: string): string;\n export var sep: string;\n export var delimiter: string;\n export function parse(p: string): ParsedPath;\n export function format(pP: FormatInputPathObject): string;\n }\n\n export module win32 {\n export function normalize(p: string): string;\n export function join(...paths: any[]): string;\n export function resolve(...pathSegments: any[]): string;\n export function isAbsolute(p: string): boolean;\n export function relative(from: string, to: string): string;\n export function dirname(p: string): string;\n export function basename(p: string, ext?: string): string;\n export function extname(p: string): string;\n export var sep: string;\n export var delimiter: string;\n export function parse(p: string): ParsedPath;\n export function format(pP: FormatInputPathObject): string;\n }\n}\n\ndeclare module "string_decoder" {\n export interface NodeStringDecoder {\n write(buffer: Buffer): string;\n end(buffer?: Buffer): string;\n }\n export var StringDecoder: {\n new(encoding?: string): NodeStringDecoder;\n };\n}\n\ndeclare module "tls" {\n import * as crypto from "crypto";\n import * as dns from "dns";\n import * as net from "net";\n import * as stream from "stream";\n\n var CLIENT_RENEG_LIMIT: number;\n var CLIENT_RENEG_WINDOW: number;\n\n export interface Certificate {\n /**\n * Country code.\n */\n C: string;\n /**\n * Street.\n */\n ST: string;\n /**\n * Locality.\n */\n L: string;\n /**\n * Organization.\n */\n O: string;\n /**\n * Organizational unit.\n */\n OU: string;\n /**\n * Common name.\n */\n CN: string;\n }\n\n export interface PeerCertificate {\n subject: Certificate;\n issuer: Certificate;\n subjectaltname: string;\n infoAccess: { [index: string]: string[] | undefined };\n modulus: string;\n exponent: string;\n valid_from: string;\n valid_to: string;\n fingerprint: string;\n ext_key_usage: string[];\n serialNumber: string;\n raw: Buffer;\n }\n\n export interface DetailedPeerCertificate extends PeerCertificate {\n issuerCertificate: DetailedPeerCertificate;\n }\n\n export interface CipherNameAndProtocol {\n /**\n * The cipher name.\n */\n name: string;\n /**\n * SSL/TLS protocol version.\n */\n version: string;\n }\n\n export class TLSSocket extends net.Socket {\n /**\n * Construct a new tls.TLSSocket object from an existing TCP socket.\n */\n constructor(socket: net.Socket, options?: {\n /**\n * An optional TLS context object from tls.createSecureContext()\n */\n secureContext?: SecureContext,\n /**\n * If true the TLS socket will be instantiated in server-mode.\n * Defaults to false.\n */\n isServer?: boolean,\n /**\n * An optional net.Server instance.\n */\n server?: net.Server,\n /**\n * If true the server will request a certificate from clients that\n * connect and attempt to verify that certificate. Defaults to\n * false.\n */\n requestCert?: boolean,\n /**\n * If true the server will reject any connection which is not\n * authorized with the list of supplied CAs. This option only has an\n * effect if requestCert is true. Defaults to false.\n */\n rejectUnauthorized?: boolean,\n /**\n * An array of strings or a Buffer naming possible NPN protocols.\n * (Protocols should be ordered by their priority.)\n */\n NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array,\n /**\n * An array of strings or a Buffer naming possible ALPN protocols.\n * (Protocols should be ordered by their priority.) When the server\n * receives both NPN and ALPN extensions from the client, ALPN takes\n * precedence over NPN and the server does not send an NPN extension\n * to the client.\n */\n ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array,\n /**\n * SNICallback(servername, cb) A function that will be\n * called if the client supports SNI TLS extension. Two arguments\n * will be passed when called: servername and cb. SNICallback should\n * invoke cb(null, ctx), where ctx is a SecureContext instance.\n * (tls.createSecureContext(...) can be used to get a proper\n * SecureContext.) If SNICallback wasn\'t provided the default callback\n * with high-level API will be used (see below).\n */\n SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void,\n /**\n * An optional Buffer instance containing a TLS session.\n */\n session?: Buffer,\n /**\n * If true, specifies that the OCSP status request extension will be\n * added to the client hello and an \'OCSPResponse\' event will be\n * emitted on the socket before establishing a secure communication\n */\n requestOCSP?: boolean\n });\n\n /**\n * A boolean that is true if the peer certificate was signed by one of the specified CAs, otherwise false.\n */\n authorized: boolean;\n /**\n * The reason why the peer\'s certificate has not been verified.\n * This property becomes available only when tlsSocket.authorized === false.\n */\n authorizationError: Error;\n /**\n * Static boolean value, always true.\n * May be used to distinguish TLS sockets from regular ones.\n */\n encrypted: boolean;\n /**\n * Returns an object representing the cipher name and the SSL/TLS protocol version of the current connection.\n * @returns Returns an object representing the cipher name\n * and the SSL/TLS protocol version of the current connection.\n */\n getCipher(): CipherNameAndProtocol;\n /**\n * Returns an object representing the peer\'s certificate.\n * The returned object has some properties corresponding to the field of the certificate.\n * If detailed argument is true the full chain with issuer property will be returned,\n * if false only the top certificate without issuer property.\n * If the peer does not provide a certificate, it returns null or an empty object.\n * @param detailed - If true; the full chain with issuer property will be returned.\n * @returns An object representing the peer\'s certificate.\n */\n getPeerCertificate(detailed: true): DetailedPeerCertificate;\n getPeerCertificate(detailed?: false): PeerCertificate;\n getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate;\n /**\n * Returns a string containing the negotiated SSL/TLS protocol version of the current connection.\n * The value `\'unknown\'` will be returned for connected sockets that have not completed the handshaking process.\n * The value `null` will be returned for server sockets or disconnected client sockets.\n * See https://www.openssl.org/docs/man1.0.2/ssl/SSL_get_version.html for more information.\n * @returns negotiated SSL/TLS protocol version of the current connection\n */\n getProtocol(): string | null;\n /**\n * Could be used to speed up handshake establishment when reconnecting to the server.\n * @returns ASN.1 encoded TLS session or undefined if none was negotiated.\n */\n getSession(): any;\n /**\n * NOTE: Works only with client TLS sockets.\n * Useful only for debugging, for session reuse provide session option to tls.connect().\n * @returns TLS session ticket or undefined if none was negotiated.\n */\n getTLSTicket(): any;\n /**\n * Initiate TLS renegotiation process.\n *\n * NOTE: Can be used to request peer\'s certificate after the secure connection has been established.\n * ANOTHER NOTE: When running as the server, socket will be destroyed with an error after handshakeTimeout timeout.\n * @param options - The options may contain the following fields: rejectUnauthorized,\n * requestCert (See tls.createServer() for details).\n * @param callback - callback(err) will be executed with null as err, once the renegotiation\n * is successfully completed.\n */\n renegotiate(options: { rejectUnauthorized?: boolean, requestCert?: boolean }, callback: (err: Error | null) => void): any;\n /**\n * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512).\n * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by\n * the TLS layer until the entire fragment is received and its integrity is verified;\n * large fragments can span multiple roundtrips, and their processing can be delayed due to packet\n * loss or reordering. However, smaller fragments add extra TLS framing bytes and CPU overhead,\n * which may decrease overall server throughput.\n * @param size - TLS fragment size (default and maximum value is: 16384, minimum is: 512).\n * @returns Returns true on success, false otherwise.\n */\n setMaxSendFragment(size: number): boolean;\n\n /**\n * events.EventEmitter\n * 1. OCSPResponse\n * 2. secureConnect\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this;\n addListener(event: "secureConnect", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "OCSPResponse", response: Buffer): boolean;\n emit(event: "secureConnect"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "OCSPResponse", listener: (response: Buffer) => void): this;\n on(event: "secureConnect", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "OCSPResponse", listener: (response: Buffer) => void): this;\n once(event: "secureConnect", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this;\n prependListener(event: "secureConnect", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this;\n prependOnceListener(event: "secureConnect", listener: () => void): this;\n }\n\n export interface TlsOptions extends SecureContextOptions {\n handshakeTimeout?: number;\n requestCert?: boolean;\n rejectUnauthorized?: boolean;\n NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array;\n ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array;\n SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void;\n sessionTimeout?: number;\n ticketKeys?: Buffer;\n }\n\n export interface ConnectionOptions extends SecureContextOptions {\n host?: string;\n port?: number;\n path?: string; // Creates unix socket connection to path. If this option is specified, `host` and `port` are ignored.\n socket?: net.Socket; // Establish secure connection on a given socket rather than creating a new socket\n rejectUnauthorized?: boolean; // Defaults to true\n NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array;\n ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array;\n checkServerIdentity?: typeof checkServerIdentity;\n servername?: string; // SNI TLS Extension\n session?: Buffer;\n minDHSize?: number;\n secureContext?: SecureContext; // If not provided, the entire ConnectionOptions object will be passed to tls.createSecureContext()\n lookup?: net.LookupFunction;\n }\n\n export class Server extends net.Server {\n addContext(hostName: string, credentials: {\n key: string;\n cert: string;\n ca: string;\n }): void;\n\n /**\n * events.EventEmitter\n * 1. tlsClientError\n * 2. newSession\n * 3. OCSPRequest\n * 4. resumeSession\n * 5. secureConnection\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;\n addListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this;\n addListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this;\n addListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this;\n addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean;\n emit(event: "newSession", sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void): boolean;\n emit(event: "OCSPRequest", certificate: Buffer, issuer: Buffer, callback: Function): boolean;\n emit(event: "resumeSession", sessionId: any, callback: (err: Error, sessionData: any) => void): boolean;\n emit(event: "secureConnection", tlsSocket: TLSSocket): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;\n on(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this;\n on(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this;\n on(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this;\n on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;\n once(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this;\n once(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this;\n once(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this;\n once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;\n prependListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this;\n prependListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this;\n prependListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this;\n prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;\n prependOnceListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this;\n prependOnceListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this;\n prependOnceListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this;\n prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;\n }\n\n export interface ClearTextStream extends stream.Duplex {\n authorized: boolean;\n authorizationError: Error;\n getPeerCertificate(): any;\n getCipher: {\n name: string;\n version: string;\n };\n address: {\n port: number;\n family: string;\n address: string;\n };\n remoteAddress: string;\n remotePort: number;\n }\n\n export interface SecurePair {\n encrypted: any;\n cleartext: any;\n }\n\n export interface SecureContextOptions {\n pfx?: string | Buffer | Array;\n key?: string | Buffer | Array;\n passphrase?: string;\n cert?: string | Buffer | Array;\n ca?: string | Buffer | Array;\n ciphers?: string;\n honorCipherOrder?: boolean;\n ecdhCurve?: string;\n crl?: string | Buffer | Array;\n dhparam?: string | Buffer;\n secureOptions?: number; // Value is a numeric bitmask of the `SSL_OP_*` options\n secureProtocol?: string; // SSL Method, e.g. SSLv23_method\n sessionIdContext?: string;\n }\n\n export interface SecureContext {\n context: any;\n }\n\n /*\n * Verifies the certificate `cert` is issued to host `host`.\n * @host The hostname to verify the certificate against\n * @cert PeerCertificate representing the peer\'s certificate\n *\n * Returns Error object, populating it with the reason, host and cert on failure. On success, returns undefined.\n */\n export function checkServerIdentity(host: string, cert: PeerCertificate): Error | undefined;\n export function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server;\n export function connect(options: ConnectionOptions, secureConnectionListener?: () => void): TLSSocket;\n export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;\n export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;\n export function createSecurePair(credentials?: crypto.Credentials, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair;\n export function createSecureContext(details: SecureContextOptions): SecureContext;\n export function getCiphers(): string[];\n\n export var DEFAULT_ECDH_CURVE: string;\n}\n\ndeclare module "crypto" {\n export interface Certificate {\n exportChallenge(spkac: string | Buffer): Buffer;\n exportPublicKey(spkac: string | Buffer): Buffer;\n verifySpkac(spkac: Buffer): boolean;\n }\n export var Certificate: {\n new(): Certificate;\n (): Certificate;\n };\n\n export var fips: boolean;\n\n export interface CredentialDetails {\n pfx: string;\n key: string;\n passphrase: string;\n cert: string;\n ca: string | string[];\n crl: string | string[];\n ciphers: string;\n }\n export interface Credentials { context?: any; }\n export function createCredentials(details: CredentialDetails): Credentials;\n export function createHash(algorithm: string): Hash;\n export function createHmac(algorithm: string, key: string | Buffer): Hmac;\n\n type Utf8AsciiLatin1Encoding = "utf8" | "ascii" | "latin1";\n type HexBase64Latin1Encoding = "latin1" | "hex" | "base64";\n type Utf8AsciiBinaryEncoding = "utf8" | "ascii" | "binary";\n type HexBase64BinaryEncoding = "binary" | "base64" | "hex";\n type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid";\n\n export interface Hash extends NodeJS.ReadWriteStream {\n update(data: string | Buffer | DataView): Hash;\n update(data: string | Buffer | DataView, input_encoding: Utf8AsciiLatin1Encoding): Hash;\n digest(): Buffer;\n digest(encoding: HexBase64Latin1Encoding): string;\n }\n export interface Hmac extends NodeJS.ReadWriteStream {\n update(data: string | Buffer | DataView): Hmac;\n update(data: string | Buffer | DataView, input_encoding: Utf8AsciiLatin1Encoding): Hmac;\n digest(): Buffer;\n digest(encoding: HexBase64Latin1Encoding): string;\n }\n export function createCipher(algorithm: string, password: any): Cipher;\n export function createCipheriv(algorithm: string, key: any, iv: any): Cipher;\n export interface Cipher extends NodeJS.ReadWriteStream {\n update(data: Buffer | DataView): Buffer;\n update(data: string, input_encoding: Utf8AsciiBinaryEncoding): Buffer;\n update(data: Buffer | DataView, input_encoding: any, output_encoding: HexBase64BinaryEncoding): string;\n update(data: string, input_encoding: Utf8AsciiBinaryEncoding, output_encoding: HexBase64BinaryEncoding): string;\n final(): Buffer;\n final(output_encoding: string): string;\n setAutoPadding(auto_padding?: boolean): this;\n getAuthTag(): Buffer;\n setAAD(buffer: Buffer): this;\n }\n export function createDecipher(algorithm: string, password: any): Decipher;\n export function createDecipheriv(algorithm: string, key: any, iv: any): Decipher;\n export interface Decipher extends NodeJS.ReadWriteStream {\n update(data: Buffer | DataView): Buffer;\n update(data: string, input_encoding: HexBase64BinaryEncoding): Buffer;\n update(data: Buffer | DataView, input_encoding: any, output_encoding: Utf8AsciiBinaryEncoding): string;\n update(data: string, input_encoding: HexBase64BinaryEncoding, output_encoding: Utf8AsciiBinaryEncoding): string;\n final(): Buffer;\n final(output_encoding: string): string;\n setAutoPadding(auto_padding?: boolean): this;\n setAuthTag(tag: Buffer): this;\n setAAD(buffer: Buffer): this;\n }\n export function createSign(algorithm: string): Signer;\n export interface Signer extends NodeJS.WritableStream {\n update(data: string | Buffer | DataView): Signer;\n update(data: string | Buffer | DataView, input_encoding: Utf8AsciiLatin1Encoding): Signer;\n sign(private_key: string | { key: string; passphrase: string }): Buffer;\n sign(private_key: string | { key: string; passphrase: string }, output_format: HexBase64Latin1Encoding): string;\n }\n export function createVerify(algorith: string): Verify;\n export interface Verify extends NodeJS.WritableStream {\n update(data: string | Buffer | DataView): Verify;\n update(data: string | Buffer | DataView, input_encoding: Utf8AsciiLatin1Encoding): Verify;\n verify(object: string | Object, signature: Buffer | DataView): boolean;\n verify(object: string | Object, signature: string, signature_format: HexBase64Latin1Encoding): boolean;\n // https://nodejs.org/api/crypto.html#crypto_verifier_verify_object_signature_signature_format\n // The signature field accepts a TypedArray type, but it is only available starting ES2017\n }\n export function createDiffieHellman(prime_length: number, generator?: number): DiffieHellman;\n export function createDiffieHellman(prime: Buffer): DiffieHellman;\n export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding): DiffieHellman;\n export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: number | Buffer): DiffieHellman;\n export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: string, generator_encoding: HexBase64Latin1Encoding): DiffieHellman;\n export interface DiffieHellman {\n generateKeys(): Buffer;\n generateKeys(encoding: HexBase64Latin1Encoding): string;\n computeSecret(other_public_key: Buffer): Buffer;\n computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer;\n computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string;\n getPrime(): Buffer;\n getPrime(encoding: HexBase64Latin1Encoding): string;\n getGenerator(): Buffer;\n getGenerator(encoding: HexBase64Latin1Encoding): string;\n getPublicKey(): Buffer;\n getPublicKey(encoding: HexBase64Latin1Encoding): string;\n getPrivateKey(): Buffer;\n getPrivateKey(encoding: HexBase64Latin1Encoding): string;\n setPublicKey(public_key: Buffer): void;\n setPublicKey(public_key: string, encoding: string): void;\n setPrivateKey(private_key: Buffer): void;\n setPrivateKey(private_key: string, encoding: string): void;\n verifyError: number;\n }\n export function getDiffieHellman(group_name: string): DiffieHellman;\n export function pbkdf2(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string, callback: (err: Error, derivedKey: Buffer) => any): void;\n export function pbkdf2Sync(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string): Buffer;\n export function randomBytes(size: number): Buffer;\n export function randomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void;\n export function pseudoRandomBytes(size: number): Buffer;\n export function pseudoRandomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void;\n export function randomFillSync(buffer: Buffer | Uint8Array, offset?: number, size?: number): Buffer;\n export function randomFill(buffer: Buffer, callback: (err: Error, buf: Buffer) => void): void;\n export function randomFill(buffer: Uint8Array, callback: (err: Error, buf: Uint8Array) => void): void;\n export function randomFill(buffer: Buffer, offset: number, callback: (err: Error, buf: Buffer) => void): void;\n export function randomFill(buffer: Uint8Array, offset: number, callback: (err: Error, buf: Uint8Array) => void): void;\n export function randomFill(buffer: Buffer, offset: number, size: number, callback: (err: Error, buf: Buffer) => void): void;\n export function randomFill(buffer: Uint8Array, offset: number, size: number, callback: (err: Error, buf: Uint8Array) => void): void;\n export interface RsaPublicKey {\n key: string;\n padding?: number;\n }\n export interface RsaPrivateKey {\n key: string;\n passphrase?: string;\n padding?: number;\n }\n export function publicEncrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer;\n export function privateDecrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer;\n export function privateEncrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer;\n export function publicDecrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer;\n export function getCiphers(): string[];\n export function getCurves(): string[];\n export function getHashes(): string[];\n export interface ECDH {\n generateKeys(): Buffer;\n generateKeys(encoding: HexBase64Latin1Encoding): string;\n generateKeys(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string;\n computeSecret(other_public_key: Buffer): Buffer;\n computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer;\n computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string;\n getPrivateKey(): Buffer;\n getPrivateKey(encoding: HexBase64Latin1Encoding): string;\n getPublicKey(): Buffer;\n getPublicKey(encoding: HexBase64Latin1Encoding): string;\n getPublicKey(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string;\n setPrivateKey(private_key: Buffer): void;\n setPrivateKey(private_key: string, encoding: HexBase64Latin1Encoding): void;\n }\n export function createECDH(curve_name: string): ECDH;\n export function timingSafeEqual(a: Buffer, b: Buffer): boolean;\n export var DEFAULT_ENCODING: string;\n}\n\ndeclare module "stream" {\n import * as events from "events";\n\n class internal extends events.EventEmitter {\n pipe(destination: T, options?: { end?: boolean; }): T;\n }\n\n namespace internal {\n export class Stream extends internal { }\n\n export interface ReadableOptions {\n highWaterMark?: number;\n encoding?: string;\n objectMode?: boolean;\n read?: (this: Readable, size?: number) => any;\n destroy?: (error?: Error) => any;\n }\n\n export class Readable extends Stream implements NodeJS.ReadableStream {\n readable: boolean;\n readonly readableHighWaterMark: number;\n constructor(opts?: ReadableOptions);\n _read(size: number): void;\n read(size?: number): any;\n setEncoding(encoding: string): this;\n pause(): this;\n resume(): this;\n isPaused(): boolean;\n unpipe(destination?: T): this;\n unshift(chunk: any): void;\n wrap(oldStream: NodeJS.ReadableStream): this;\n push(chunk: any, encoding?: string): boolean;\n _destroy(err: Error, callback: Function): void;\n destroy(error?: Error): void;\n\n /**\n * Event emitter\n * The defined events on documents including:\n * 1. close\n * 2. data\n * 3. end\n * 4. readable\n * 5. error\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n addListener(event: "end", listener: () => void): this;\n addListener(event: "readable", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close"): boolean;\n emit(event: "data", chunk: Buffer | string): boolean;\n emit(event: "end"): boolean;\n emit(event: "readable"): boolean;\n emit(event: "error", err: Error): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "data", listener: (chunk: Buffer | string) => void): this;\n on(event: "end", listener: () => void): this;\n on(event: "readable", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "data", listener: (chunk: Buffer | string) => void): this;\n once(event: "end", listener: () => void): this;\n once(event: "readable", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n prependListener(event: "end", listener: () => void): this;\n prependListener(event: "readable", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n prependOnceListener(event: "end", listener: () => void): this;\n prependOnceListener(event: "readable", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n\n removeListener(event: string, listener: (...args: any[]) => void): this;\n removeListener(event: "close", listener: () => void): this;\n removeListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n removeListener(event: "end", listener: () => void): this;\n removeListener(event: "readable", listener: () => void): this;\n removeListener(event: "error", listener: (err: Error) => void): this;\n }\n\n export interface WritableOptions {\n highWaterMark?: number;\n decodeStrings?: boolean;\n objectMode?: boolean;\n write?: (chunk: any, encoding: string, callback: Function) => any;\n writev?: (chunks: Array<{ chunk: any, encoding: string }>, callback: Function) => any;\n destroy?: (error?: Error) => any;\n final?: (callback: (error?: Error) => void) => void;\n }\n\n export class Writable extends Stream implements NodeJS.WritableStream {\n writable: boolean;\n readonly writableHighWaterMark: number;\n constructor(opts?: WritableOptions);\n _write(chunk: any, encoding: string, callback: (err?: Error) => void): void;\n _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (err?: Error) => void): void;\n _destroy(err: Error, callback: Function): void;\n _final(callback: Function): void;\n write(chunk: any, cb?: Function): boolean;\n write(chunk: any, encoding?: string, cb?: Function): boolean;\n setDefaultEncoding(encoding: string): this;\n end(cb?: Function): void;\n end(chunk: any, cb?: Function): void;\n end(chunk: any, encoding?: string, cb?: Function): void;\n cork(): void;\n uncork(): void;\n destroy(error?: Error): void;\n\n /**\n * Event emitter\n * The defined events on documents including:\n * 1. close\n * 2. drain\n * 3. error\n * 4. finish\n * 5. pipe\n * 6. unpipe\n */\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "drain", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "finish", listener: () => void): this;\n addListener(event: "pipe", listener: (src: Readable) => void): this;\n addListener(event: "unpipe", listener: (src: Readable) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close"): boolean;\n emit(event: "drain", chunk: Buffer | string): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "finish"): boolean;\n emit(event: "pipe", src: Readable): boolean;\n emit(event: "unpipe", src: Readable): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "drain", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "finish", listener: () => void): this;\n on(event: "pipe", listener: (src: Readable) => void): this;\n on(event: "unpipe", listener: (src: Readable) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "drain", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "finish", listener: () => void): this;\n once(event: "pipe", listener: (src: Readable) => void): this;\n once(event: "unpipe", listener: (src: Readable) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "drain", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "finish", listener: () => void): this;\n prependListener(event: "pipe", listener: (src: Readable) => void): this;\n prependListener(event: "unpipe", listener: (src: Readable) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "drain", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "finish", listener: () => void): this;\n prependOnceListener(event: "pipe", listener: (src: Readable) => void): this;\n prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this;\n\n removeListener(event: string, listener: (...args: any[]) => void): this;\n removeListener(event: "close", listener: () => void): this;\n removeListener(event: "drain", listener: () => void): this;\n removeListener(event: "error", listener: (err: Error) => void): this;\n removeListener(event: "finish", listener: () => void): this;\n removeListener(event: "pipe", listener: (src: Readable) => void): this;\n removeListener(event: "unpipe", listener: (src: Readable) => void): this;\n }\n\n export interface DuplexOptions extends ReadableOptions, WritableOptions {\n allowHalfOpen?: boolean;\n readableObjectMode?: boolean;\n writableObjectMode?: boolean;\n }\n\n // Note: Duplex extends both Readable and Writable.\n export class Duplex extends Readable implements Writable {\n writable: boolean;\n readonly writableHighWaterMark: number;\n constructor(opts?: DuplexOptions);\n _write(chunk: any, encoding: string, callback: (err?: Error) => void): void;\n _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (err?: Error) => void): void;\n _destroy(err: Error, callback: Function): void;\n _final(callback: Function): void;\n write(chunk: any, cb?: Function): boolean;\n write(chunk: any, encoding?: string, cb?: Function): boolean;\n setDefaultEncoding(encoding: string): this;\n end(cb?: Function): void;\n end(chunk: any, cb?: Function): void;\n end(chunk: any, encoding?: string, cb?: Function): void;\n cork(): void;\n uncork(): void;\n }\n\n export interface TransformOptions extends DuplexOptions {\n transform?: (chunk: string | Buffer, encoding: string, callback: Function) => any;\n flush?: (callback: Function) => any;\n }\n\n export class Transform extends Duplex {\n constructor(opts?: TransformOptions);\n _transform(chunk: any, encoding: string, callback: Function): void;\n destroy(error?: Error): void;\n }\n\n export class PassThrough extends Transform { }\n }\n\n export = internal;\n}\n\ndeclare module "util" {\n export interface InspectOptions extends NodeJS.InspectOptions { }\n export function format(format: any, ...param: any[]): string;\n export function debug(string: string): void;\n export function error(...param: any[]): void;\n export function puts(...param: any[]): void;\n export function print(...param: any[]): void;\n export function log(string: string): void;\n export var inspect: {\n (object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string;\n (object: any, options: InspectOptions): string;\n colors: {\n [color: string]: [number, number] | undefined\n }\n styles: {\n [style: string]: string | undefined\n }\n defaultOptions: InspectOptions;\n custom: symbol;\n };\n export function isArray(object: any): object is any[];\n export function isRegExp(object: any): object is RegExp;\n export function isDate(object: any): object is Date;\n export function isError(object: any): object is Error;\n export function inherits(constructor: any, superConstructor: any): void;\n export function debuglog(key: string): (msg: string, ...param: any[]) => void;\n export function isBoolean(object: any): object is boolean;\n export function isBuffer(object: any): object is Buffer;\n export function isFunction(object: any): boolean;\n export function isNull(object: any): object is null;\n export function isNullOrUndefined(object: any): object is null | undefined;\n export function isNumber(object: any): object is number;\n export function isObject(object: any): boolean;\n export function isPrimitive(object: any): boolean;\n export function isString(object: any): object is string;\n export function isSymbol(object: any): object is symbol;\n export function isUndefined(object: any): object is undefined;\n export function deprecate(fn: T, message: string): T;\n\n export interface CustomPromisify extends Function {\n __promisify__: TCustom;\n }\n\n export function callbackify(fn: () => Promise): (callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: () => Promise): (callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n export function callbackify(fn: (arg1: T1) => Promise): (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: (arg1: T1) => Promise): (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2) => Promise): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2) => Promise): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void;\n export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;\n\n export function promisify(fn: CustomPromisify): TCustom;\n export function promisify(fn: (callback: (err: Error | null, result: TResult) => void) => void): () => Promise;\n export function promisify(fn: (callback: (err: Error | null) => void) => void): () => Promise;\n export function promisify(fn: (arg1: T1, callback: (err: Error | null, result: TResult) => void) => void): (arg1: T1) => Promise;\n export function promisify(fn: (arg1: T1, callback: (err: Error | null) => void) => void): (arg1: T1) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, callback: (err: Error | null, result: TResult) => void) => void): (arg1: T1, arg2: T2) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, callback: (err: Error | null) => void) => void): (arg1: T1, arg2: T2) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: Error | null, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: Error | null) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: Error | null, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: Error | null) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: Error | null, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise;\n export function promisify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: Error | null) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise;\n export function promisify(fn: Function): Function;\n export namespace promisify {\n const custom: symbol;\n }\n\n export class TextDecoder {\n readonly encoding: string;\n readonly fatal: boolean;\n readonly ignoreBOM: boolean;\n constructor(\n encoding?: string,\n options?: { fatal?: boolean; ignoreBOM?: boolean }\n );\n decode(\n input?:\n Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Uint8ClampedArray\n | Float32Array\n | Float64Array\n | DataView\n | ArrayBuffer\n | null,\n options?: { stream?: boolean }\n ): string;\n }\n\n export class TextEncoder {\n readonly encoding: string;\n constructor();\n encode(input?: string): Uint8Array;\n }\n}\n\ndeclare module "assert" {\n function internal(value: any, message?: string): void;\n namespace internal {\n export class AssertionError implements Error {\n name: string;\n message: string;\n actual: any;\n expected: any;\n operator: string;\n generatedMessage: boolean;\n\n constructor(options?: {\n message?: string; actual?: any; expected?: any;\n operator?: string; stackStartFunction?: Function\n });\n }\n\n export function fail(message: string): never;\n export function fail(actual: any, expected: any, message?: string, operator?: string): never;\n export function ok(value: any, message?: string): void;\n export function equal(actual: any, expected: any, message?: string): void;\n export function notEqual(actual: any, expected: any, message?: string): void;\n export function deepEqual(actual: any, expected: any, message?: string): void;\n export function notDeepEqual(acutal: any, expected: any, message?: string): void;\n export function strictEqual(actual: any, expected: any, message?: string): void;\n export function notStrictEqual(actual: any, expected: any, message?: string): void;\n export function deepStrictEqual(actual: any, expected: any, message?: string): void;\n export function notDeepStrictEqual(actual: any, expected: any, message?: string): void;\n\n export function throws(block: Function, message?: string): void;\n export function throws(block: Function, error: Function, message?: string): void;\n export function throws(block: Function, error: RegExp, message?: string): void;\n export function throws(block: Function, error: (err: any) => boolean, message?: string): void;\n\n export function doesNotThrow(block: Function, message?: string): void;\n export function doesNotThrow(block: Function, error: Function, message?: string): void;\n export function doesNotThrow(block: Function, error: RegExp, message?: string): void;\n export function doesNotThrow(block: Function, error: (err: any) => boolean, message?: string): void;\n\n export function ifError(value: any): void;\n }\n\n export = internal;\n}\n\ndeclare module "tty" {\n import * as net from "net";\n\n export function isatty(fd: number): boolean;\n export class ReadStream extends net.Socket {\n isRaw: boolean;\n setRawMode(mode: boolean): void;\n isTTY: boolean;\n }\n export class WriteStream extends net.Socket {\n columns: number;\n rows: number;\n isTTY: boolean;\n }\n}\n\ndeclare module "domain" {\n import * as events from "events";\n\n export class Domain extends events.EventEmitter implements NodeJS.Domain {\n run(fn: Function): void;\n add(emitter: events.EventEmitter): void;\n remove(emitter: events.EventEmitter): void;\n bind(cb: (err: Error, data: any) => any): any;\n intercept(cb: (data: any) => any): any;\n dispose(): void;\n members: any[];\n enter(): void;\n exit(): void;\n }\n\n export function create(): Domain;\n}\n\ndeclare module "constants" {\n export var E2BIG: number;\n export var EACCES: number;\n export var EADDRINUSE: number;\n export var EADDRNOTAVAIL: number;\n export var EAFNOSUPPORT: number;\n export var EAGAIN: number;\n export var EALREADY: number;\n export var EBADF: number;\n export var EBADMSG: number;\n export var EBUSY: number;\n export var ECANCELED: number;\n export var ECHILD: number;\n export var ECONNABORTED: number;\n export var ECONNREFUSED: number;\n export var ECONNRESET: number;\n export var EDEADLK: number;\n export var EDESTADDRREQ: number;\n export var EDOM: number;\n export var EEXIST: number;\n export var EFAULT: number;\n export var EFBIG: number;\n export var EHOSTUNREACH: number;\n export var EIDRM: number;\n export var EILSEQ: number;\n export var EINPROGRESS: number;\n export var EINTR: number;\n export var EINVAL: number;\n export var EIO: number;\n export var EISCONN: number;\n export var EISDIR: number;\n export var ELOOP: number;\n export var EMFILE: number;\n export var EMLINK: number;\n export var EMSGSIZE: number;\n export var ENAMETOOLONG: number;\n export var ENETDOWN: number;\n export var ENETRESET: number;\n export var ENETUNREACH: number;\n export var ENFILE: number;\n export var ENOBUFS: number;\n export var ENODATA: number;\n export var ENODEV: number;\n export var ENOENT: number;\n export var ENOEXEC: number;\n export var ENOLCK: number;\n export var ENOLINK: number;\n export var ENOMEM: number;\n export var ENOMSG: number;\n export var ENOPROTOOPT: number;\n export var ENOSPC: number;\n export var ENOSR: number;\n export var ENOSTR: number;\n export var ENOSYS: number;\n export var ENOTCONN: number;\n export var ENOTDIR: number;\n export var ENOTEMPTY: number;\n export var ENOTSOCK: number;\n export var ENOTSUP: number;\n export var ENOTTY: number;\n export var ENXIO: number;\n export var EOPNOTSUPP: number;\n export var EOVERFLOW: number;\n export var EPERM: number;\n export var EPIPE: number;\n export var EPROTO: number;\n export var EPROTONOSUPPORT: number;\n export var EPROTOTYPE: number;\n export var ERANGE: number;\n export var EROFS: number;\n export var ESPIPE: number;\n export var ESRCH: number;\n export var ETIME: number;\n export var ETIMEDOUT: number;\n export var ETXTBSY: number;\n export var EWOULDBLOCK: number;\n export var EXDEV: number;\n export var WSAEINTR: number;\n export var WSAEBADF: number;\n export var WSAEACCES: number;\n export var WSAEFAULT: number;\n export var WSAEINVAL: number;\n export var WSAEMFILE: number;\n export var WSAEWOULDBLOCK: number;\n export var WSAEINPROGRESS: number;\n export var WSAEALREADY: number;\n export var WSAENOTSOCK: number;\n export var WSAEDESTADDRREQ: number;\n export var WSAEMSGSIZE: number;\n export var WSAEPROTOTYPE: number;\n export var WSAENOPROTOOPT: number;\n export var WSAEPROTONOSUPPORT: number;\n export var WSAESOCKTNOSUPPORT: number;\n export var WSAEOPNOTSUPP: number;\n export var WSAEPFNOSUPPORT: number;\n export var WSAEAFNOSUPPORT: number;\n export var WSAEADDRINUSE: number;\n export var WSAEADDRNOTAVAIL: number;\n export var WSAENETDOWN: number;\n export var WSAENETUNREACH: number;\n export var WSAENETRESET: number;\n export var WSAECONNABORTED: number;\n export var WSAECONNRESET: number;\n export var WSAENOBUFS: number;\n export var WSAEISCONN: number;\n export var WSAENOTCONN: number;\n export var WSAESHUTDOWN: number;\n export var WSAETOOMANYREFS: number;\n export var WSAETIMEDOUT: number;\n export var WSAECONNREFUSED: number;\n export var WSAELOOP: number;\n export var WSAENAMETOOLONG: number;\n export var WSAEHOSTDOWN: number;\n export var WSAEHOSTUNREACH: number;\n export var WSAENOTEMPTY: number;\n export var WSAEPROCLIM: number;\n export var WSAEUSERS: number;\n export var WSAEDQUOT: number;\n export var WSAESTALE: number;\n export var WSAEREMOTE: number;\n export var WSASYSNOTREADY: number;\n export var WSAVERNOTSUPPORTED: number;\n export var WSANOTINITIALISED: number;\n export var WSAEDISCON: number;\n export var WSAENOMORE: number;\n export var WSAECANCELLED: number;\n export var WSAEINVALIDPROCTABLE: number;\n export var WSAEINVALIDPROVIDER: number;\n export var WSAEPROVIDERFAILEDINIT: number;\n export var WSASYSCALLFAILURE: number;\n export var WSASERVICE_NOT_FOUND: number;\n export var WSATYPE_NOT_FOUND: number;\n export var WSA_E_NO_MORE: number;\n export var WSA_E_CANCELLED: number;\n export var WSAEREFUSED: number;\n export var SIGHUP: number;\n export var SIGINT: number;\n export var SIGILL: number;\n export var SIGABRT: number;\n export var SIGFPE: number;\n export var SIGKILL: number;\n export var SIGSEGV: number;\n export var SIGTERM: number;\n export var SIGBREAK: number;\n export var SIGWINCH: number;\n export var SSL_OP_ALL: number;\n export var SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number;\n export var SSL_OP_CIPHER_SERVER_PREFERENCE: number;\n export var SSL_OP_CISCO_ANYCONNECT: number;\n export var SSL_OP_COOKIE_EXCHANGE: number;\n export var SSL_OP_CRYPTOPRO_TLSEXT_BUG: number;\n export var SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number;\n export var SSL_OP_EPHEMERAL_RSA: number;\n export var SSL_OP_LEGACY_SERVER_CONNECT: number;\n export var SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number;\n export var SSL_OP_MICROSOFT_SESS_ID_BUG: number;\n export var SSL_OP_MSIE_SSLV2_RSA_PADDING: number;\n export var SSL_OP_NETSCAPE_CA_DN_BUG: number;\n export var SSL_OP_NETSCAPE_CHALLENGE_BUG: number;\n export var SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number;\n export var SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number;\n export var SSL_OP_NO_COMPRESSION: number;\n export var SSL_OP_NO_QUERY_MTU: number;\n export var SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number;\n export var SSL_OP_NO_SSLv2: number;\n export var SSL_OP_NO_SSLv3: number;\n export var SSL_OP_NO_TICKET: number;\n export var SSL_OP_NO_TLSv1: number;\n export var SSL_OP_NO_TLSv1_1: number;\n export var SSL_OP_NO_TLSv1_2: number;\n export var SSL_OP_PKCS1_CHECK_1: number;\n export var SSL_OP_PKCS1_CHECK_2: number;\n export var SSL_OP_SINGLE_DH_USE: number;\n export var SSL_OP_SINGLE_ECDH_USE: number;\n export var SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number;\n export var SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number;\n export var SSL_OP_TLS_BLOCK_PADDING_BUG: number;\n export var SSL_OP_TLS_D5_BUG: number;\n export var SSL_OP_TLS_ROLLBACK_BUG: number;\n export var ENGINE_METHOD_DSA: number;\n export var ENGINE_METHOD_DH: number;\n export var ENGINE_METHOD_RAND: number;\n export var ENGINE_METHOD_ECDH: number;\n export var ENGINE_METHOD_ECDSA: number;\n export var ENGINE_METHOD_CIPHERS: number;\n export var ENGINE_METHOD_DIGESTS: number;\n export var ENGINE_METHOD_STORE: number;\n export var ENGINE_METHOD_PKEY_METHS: number;\n export var ENGINE_METHOD_PKEY_ASN1_METHS: number;\n export var ENGINE_METHOD_ALL: number;\n export var ENGINE_METHOD_NONE: number;\n export var DH_CHECK_P_NOT_SAFE_PRIME: number;\n export var DH_CHECK_P_NOT_PRIME: number;\n export var DH_UNABLE_TO_CHECK_GENERATOR: number;\n export var DH_NOT_SUITABLE_GENERATOR: number;\n export var NPN_ENABLED: number;\n export var RSA_PKCS1_PADDING: number;\n export var RSA_SSLV23_PADDING: number;\n export var RSA_NO_PADDING: number;\n export var RSA_PKCS1_OAEP_PADDING: number;\n export var RSA_X931_PADDING: number;\n export var RSA_PKCS1_PSS_PADDING: number;\n export var POINT_CONVERSION_COMPRESSED: number;\n export var POINT_CONVERSION_UNCOMPRESSED: number;\n export var POINT_CONVERSION_HYBRID: number;\n export var O_RDONLY: number;\n export var O_WRONLY: number;\n export var O_RDWR: number;\n export var S_IFMT: number;\n export var S_IFREG: number;\n export var S_IFDIR: number;\n export var S_IFCHR: number;\n export var S_IFBLK: number;\n export var S_IFIFO: number;\n export var S_IFSOCK: number;\n export var S_IRWXU: number;\n export var S_IRUSR: number;\n export var S_IWUSR: number;\n export var S_IXUSR: number;\n export var S_IRWXG: number;\n export var S_IRGRP: number;\n export var S_IWGRP: number;\n export var S_IXGRP: number;\n export var S_IRWXO: number;\n export var S_IROTH: number;\n export var S_IWOTH: number;\n export var S_IXOTH: number;\n export var S_IFLNK: number;\n export var O_CREAT: number;\n export var O_EXCL: number;\n export var O_NOCTTY: number;\n export var O_DIRECTORY: number;\n export var O_NOATIME: number;\n export var O_NOFOLLOW: number;\n export var O_SYNC: number;\n export var O_DSYNC: number;\n export var O_SYMLINK: number;\n export var O_DIRECT: number;\n export var O_NONBLOCK: number;\n export var O_TRUNC: number;\n export var O_APPEND: number;\n export var F_OK: number;\n export var R_OK: number;\n export var W_OK: number;\n export var X_OK: number;\n export var UV_UDP_REUSEADDR: number;\n export var SIGQUIT: number;\n export var SIGTRAP: number;\n export var SIGIOT: number;\n export var SIGBUS: number;\n export var SIGUSR1: number;\n export var SIGUSR2: number;\n export var SIGPIPE: number;\n export var SIGALRM: number;\n export var SIGCHLD: number;\n export var SIGSTKFLT: number;\n export var SIGCONT: number;\n export var SIGSTOP: number;\n export var SIGTSTP: number;\n export var SIGTTIN: number;\n export var SIGTTOU: number;\n export var SIGURG: number;\n export var SIGXCPU: number;\n export var SIGXFSZ: number;\n export var SIGVTALRM: number;\n export var SIGPROF: number;\n export var SIGIO: number;\n export var SIGPOLL: number;\n export var SIGPWR: number;\n export var SIGSYS: number;\n export var SIGUNUSED: number;\n export var defaultCoreCipherList: string;\n export var defaultCipherList: string;\n export var ENGINE_METHOD_RSA: number;\n export var ALPN_ENABLED: number;\n}\n\ndeclare module "module" {\n export = NodeJS.Module;\n}\n\ndeclare module "process" {\n export = process;\n}\n\n// tslint:disable-next-line:no-declare-current-package\ndeclare module "v8" {\n interface HeapSpaceInfo {\n space_name: string;\n space_size: number;\n space_used_size: number;\n space_available_size: number;\n physical_space_size: number;\n }\n\n // ** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */\n type DoesZapCodeSpaceFlag = 0 | 1;\n\n interface HeapInfo {\n total_heap_size: number;\n total_heap_size_executable: number;\n total_physical_size: number;\n total_available_size: number;\n used_heap_size: number;\n heap_size_limit: number;\n malloced_memory: number;\n peak_malloced_memory: number;\n does_zap_garbage: DoesZapCodeSpaceFlag;\n }\n\n export function getHeapStatistics(): HeapInfo;\n export function getHeapSpaceStatistics(): HeapSpaceInfo[];\n export function setFlagsFromString(flags: string): void;\n}\n\ndeclare module "timers" {\n export function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;\n export namespace setTimeout {\n export function __promisify__(ms: number): Promise;\n export function __promisify__(ms: number, value: T): Promise;\n }\n export function clearTimeout(timeoutId: NodeJS.Timer): void;\n export function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;\n export function clearInterval(intervalId: NodeJS.Timer): void;\n export function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any;\n export namespace setImmediate {\n export function __promisify__(): Promise;\n export function __promisify__(value: T): Promise;\n }\n export function clearImmediate(immediateId: any): void;\n}\n\ndeclare module "console" {\n export = console;\n}\n\n/**\n * Async Hooks module: https://nodejs.org/api/async_hooks.html\n */\ndeclare module "async_hooks" {\n /**\n * Returns the asyncId of the current execution context.\n */\n export function executionAsyncId(): number;\n /// @deprecated - replaced by executionAsyncId()\n export function currentId(): number;\n\n /**\n * Returns the ID of the resource responsible for calling the callback that is currently being executed.\n */\n export function triggerAsyncId(): number;\n /// @deprecated - replaced by triggerAsyncId()\n export function triggerId(): number;\n\n export interface HookCallbacks {\n /**\n * Called when a class is constructed that has the possibility to emit an asynchronous event.\n * @param asyncId a unique ID for the async resource\n * @param type the type of the async resource\n * @param triggerAsyncId the unique ID of the async resource in whose execution context this async resource was created\n * @param resource reference to the resource representing the async operation, needs to be released during destroy\n */\n init?(asyncId: number, type: string, triggerAsyncId: number, resource: Object): void;\n\n /**\n * When an asynchronous operation is initiated or completes a callback is called to notify the user.\n * The before callback is called just before said callback is executed.\n * @param asyncId the unique identifier assigned to the resource about to execute the callback.\n */\n before?(asyncId: number): void;\n\n /**\n * Called immediately after the callback specified in before is completed.\n * @param asyncId the unique identifier assigned to the resource which has executed the callback.\n */\n after?(asyncId: number): void;\n\n /**\n * Called when a promise has resolve() called. This may not be in the same execution id\n * as the promise itself.\n * @param asyncId the unique id for the promise that was resolve()d.\n */\n promiseResolve?(asyncId: number): void;\n\n /**\n * Called after the resource corresponding to asyncId is destroyed\n * @param asyncId a unique ID for the async resource\n */\n destroy?(asyncId: number): void;\n }\n\n export interface AsyncHook {\n /**\n * Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop.\n */\n enable(): this;\n\n /**\n * Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled.\n */\n disable(): this;\n }\n\n /**\n * Registers functions to be called for different lifetime events of each async operation.\n * @param options the callbacks to register\n * @return an AsyncHooks instance used for disabling and enabling hooks\n */\n export function createHook(options: HookCallbacks): AsyncHook;\n\n export interface AsyncResourceOptions {\n /**\n * The ID of the execution context that created this async event.\n * Default: `executionAsyncId()`\n */\n triggerAsyncId?: number;\n\n /**\n * Disables automatic `emitDestroy` when the object is garbage collected.\n * This usually does not need to be set (even if `emitDestroy` is called\n * manually), unless the resource\'s `asyncId` is retrieved and the\n * sensitive API\'s `emitDestroy` is called with it.\n * Default: `false`\n */\n requireManualDestroy?: boolean;\n }\n\n /**\n * The class AsyncResource was designed to be extended by the embedder\'s async resources.\n * Using this users can easily trigger the lifetime events of their own resources.\n */\n export class AsyncResource {\n /**\n * AsyncResource() is meant to be extended. Instantiating a\n * new AsyncResource() also triggers init. If triggerAsyncId is omitted then\n * async_hook.executionAsyncId() is used.\n * @param type The type of async event.\n * @param triggerAsyncId The ID of the execution context that created\n * this async event (default: `executionAsyncId()`), or an\n * AsyncResourceOptions object (since 8.10)\n */\n constructor(type: string, triggerAsyncId?: number|AsyncResourceOptions);\n\n /**\n * Call AsyncHooks before callbacks.\n */\n emitBefore(): void;\n\n /**\n * Call AsyncHooks after callbacks\n */\n emitAfter(): void;\n\n /**\n * Call AsyncHooks destroy callbacks.\n */\n emitDestroy(): void;\n\n /**\n * @return the unique ID assigned to this AsyncResource instance.\n */\n asyncId(): number;\n\n /**\n * @return the trigger ID for this AsyncResource instance.\n */\n triggerAsyncId(): number;\n }\n}\n\ndeclare module "http2" {\n import * as events from "events";\n import * as fs from "fs";\n import * as net from "net";\n import * as stream from "stream";\n import * as tls from "tls";\n import * as url from "url";\n\n import { IncomingHttpHeaders, OutgoingHttpHeaders } from "http";\n export { IncomingHttpHeaders, OutgoingHttpHeaders } from "http";\n\n // Http2Stream\n\n export interface StreamPriorityOptions {\n exclusive?: boolean;\n parent?: number;\n weight?: number;\n silent?: boolean;\n }\n\n export interface StreamState {\n localWindowSize?: number;\n state?: number;\n streamLocalClose?: number;\n streamRemoteClose?: number;\n sumDependencyWeight?: number;\n weight?: number;\n }\n\n export interface ServerStreamResponseOptions {\n endStream?: boolean;\n getTrailers?: (trailers: OutgoingHttpHeaders) => void;\n }\n\n export interface StatOptions {\n offset: number;\n length: number;\n }\n\n export interface ServerStreamFileResponseOptions {\n statCheck?: (stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions) => void | boolean;\n getTrailers?: (trailers: OutgoingHttpHeaders) => void;\n offset?: number;\n length?: number;\n }\n\n export interface ServerStreamFileResponseOptionsWithError extends ServerStreamFileResponseOptions {\n onError?: (err: NodeJS.ErrnoException) => void;\n }\n\n export interface Http2Stream extends stream.Duplex {\n readonly aborted: boolean;\n readonly destroyed: boolean;\n priority(options: StreamPriorityOptions): void;\n readonly rstCode: number;\n rstStream(code: number): void;\n rstWithNoError(): void;\n rstWithProtocolError(): void;\n rstWithCancel(): void;\n rstWithRefuse(): void;\n rstWithInternalError(): void;\n readonly session: Http2Session;\n setTimeout(msecs: number, callback?: () => void): void;\n readonly state: StreamState;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "aborted", listener: () => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n addListener(event: "drain", listener: () => void): this;\n addListener(event: "end", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "finish", listener: () => void): this;\n addListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;\n addListener(event: "pipe", listener: (src: stream.Readable) => void): this;\n addListener(event: "unpipe", listener: (src: stream.Readable) => void): this;\n addListener(event: "streamClosed", listener: (code: number) => void): this;\n addListener(event: "timeout", listener: () => void): this;\n addListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "aborted"): boolean;\n emit(event: "close"): boolean;\n emit(event: "data", chunk: Buffer | string): boolean;\n emit(event: "drain"): boolean;\n emit(event: "end"): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "finish"): boolean;\n emit(event: "frameError", frameType: number, errorCode: number): boolean;\n emit(event: "pipe", src: stream.Readable): boolean;\n emit(event: "unpipe", src: stream.Readable): boolean;\n emit(event: "streamClosed", code: number): boolean;\n emit(event: "timeout"): boolean;\n emit(event: "trailers", trailers: IncomingHttpHeaders, flags: number): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "aborted", listener: () => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "data", listener: (chunk: Buffer | string) => void): this;\n on(event: "drain", listener: () => void): this;\n on(event: "end", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "finish", listener: () => void): this;\n on(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;\n on(event: "pipe", listener: (src: stream.Readable) => void): this;\n on(event: "unpipe", listener: (src: stream.Readable) => void): this;\n on(event: "streamClosed", listener: (code: number) => void): this;\n on(event: "timeout", listener: () => void): this;\n on(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "aborted", listener: () => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "data", listener: (chunk: Buffer | string) => void): this;\n once(event: "drain", listener: () => void): this;\n once(event: "end", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "finish", listener: () => void): this;\n once(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;\n once(event: "pipe", listener: (src: stream.Readable) => void): this;\n once(event: "unpipe", listener: (src: stream.Readable) => void): this;\n once(event: "streamClosed", listener: (code: number) => void): this;\n once(event: "timeout", listener: () => void): this;\n once(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "aborted", listener: () => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n prependListener(event: "drain", listener: () => void): this;\n prependListener(event: "end", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "finish", listener: () => void): this;\n prependListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;\n prependListener(event: "pipe", listener: (src: stream.Readable) => void): this;\n prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this;\n prependListener(event: "streamClosed", listener: (code: number) => void): this;\n prependListener(event: "timeout", listener: () => void): this;\n prependListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "aborted", listener: () => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;\n prependOnceListener(event: "drain", listener: () => void): this;\n prependOnceListener(event: "end", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "finish", listener: () => void): this;\n prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;\n prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this;\n prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this;\n prependOnceListener(event: "streamClosed", listener: (code: number) => void): this;\n prependOnceListener(event: "timeout", listener: () => void): this;\n prependOnceListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;\n }\n\n export interface ClientHttp2Stream extends Http2Stream {\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n addListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n addListener(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "headers", headers: IncomingHttpHeaders, flags: number): boolean;\n emit(event: "push", headers: IncomingHttpHeaders, flags: number): boolean;\n emit(event: "response", headers: IncomingHttpHeaders, flags: number): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n on(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n on(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n once(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n once(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n prependListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n prependListener(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "headers", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n prependOnceListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n prependOnceListener(event: "response", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;\n }\n\n export interface ServerHttp2Stream extends Http2Stream {\n additionalHeaders(headers: OutgoingHttpHeaders): void;\n readonly headersSent: boolean;\n readonly pushAllowed: boolean;\n pushStream(headers: OutgoingHttpHeaders, callback?: (pushStream: ServerHttp2Stream) => void): void;\n pushStream(headers: OutgoingHttpHeaders, options?: StreamPriorityOptions, callback?: (pushStream: ServerHttp2Stream) => void): void;\n respond(headers?: OutgoingHttpHeaders, options?: ServerStreamResponseOptions): void;\n respondWithFD(fd: number, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptions): void;\n respondWithFile(path: string, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptionsWithError): void;\n }\n\n // Http2Session\n\n export interface Settings {\n headerTableSize?: number;\n enablePush?: boolean;\n initialWindowSize?: number;\n maxFrameSize?: number;\n maxConcurrentStreams?: number;\n maxHeaderListSize?: number;\n }\n\n export interface ClientSessionRequestOptions {\n endStream?: boolean;\n exclusive?: boolean;\n parent?: number;\n weight?: number;\n getTrailers?: (trailers: OutgoingHttpHeaders, flags: number) => void;\n }\n\n export interface SessionShutdownOptions {\n graceful?: boolean;\n errorCode?: number;\n lastStreamID?: number;\n opaqueData?: Buffer | Uint8Array;\n }\n\n export interface SessionState {\n effectiveLocalWindowSize?: number;\n effectiveRecvDataLength?: number;\n nextStreamID?: number;\n localWindowSize?: number;\n lastProcStreamID?: number;\n remoteWindowSize?: number;\n outboundQueueSize?: number;\n deflateDynamicTableSize?: number;\n inflateDynamicTableSize?: number;\n }\n\n export interface Http2Session extends events.EventEmitter {\n destroy(): void;\n readonly destroyed: boolean;\n readonly localSettings: Settings;\n readonly pendingSettingsAck: boolean;\n readonly remoteSettings: Settings;\n rstStream(stream: Http2Stream, code?: number): void;\n setTimeout(msecs: number, callback?: () => void): void;\n shutdown(callback?: () => void): void;\n shutdown(options: SessionShutdownOptions, callback?: () => void): void;\n readonly socket: net.Socket | tls.TLSSocket;\n readonly state: SessionState;\n priority(stream: Http2Stream, options: StreamPriorityOptions): void;\n settings(settings: Settings): void;\n readonly type: number;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "error", listener: (err: Error) => void): this;\n addListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;\n addListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;\n addListener(event: "localSettings", listener: (settings: Settings) => void): this;\n addListener(event: "remoteSettings", listener: (settings: Settings) => void): this;\n addListener(event: "socketError", listener: (err: Error) => void): this;\n addListener(event: "timeout", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "close"): boolean;\n emit(event: "error", err: Error): boolean;\n emit(event: "frameError", frameType: number, errorCode: number, streamID: number): boolean;\n emit(event: "goaway", errorCode: number, lastStreamID: number, opaqueData: Buffer): boolean;\n emit(event: "localSettings", settings: Settings): boolean;\n emit(event: "remoteSettings", settings: Settings): boolean;\n emit(event: "socketError", err: Error): boolean;\n emit(event: "timeout"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "error", listener: (err: Error) => void): this;\n on(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;\n on(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;\n on(event: "localSettings", listener: (settings: Settings) => void): this;\n on(event: "remoteSettings", listener: (settings: Settings) => void): this;\n on(event: "socketError", listener: (err: Error) => void): this;\n on(event: "timeout", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "error", listener: (err: Error) => void): this;\n once(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;\n once(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;\n once(event: "localSettings", listener: (settings: Settings) => void): this;\n once(event: "remoteSettings", listener: (settings: Settings) => void): this;\n once(event: "socketError", listener: (err: Error) => void): this;\n once(event: "timeout", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "error", listener: (err: Error) => void): this;\n prependListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;\n prependListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;\n prependListener(event: "localSettings", listener: (settings: Settings) => void): this;\n prependListener(event: "remoteSettings", listener: (settings: Settings) => void): this;\n prependListener(event: "socketError", listener: (err: Error) => void): this;\n prependListener(event: "timeout", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "error", listener: (err: Error) => void): this;\n prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;\n prependOnceListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;\n prependOnceListener(event: "localSettings", listener: (settings: Settings) => void): this;\n prependOnceListener(event: "remoteSettings", listener: (settings: Settings) => void): this;\n prependOnceListener(event: "socketError", listener: (err: Error) => void): this;\n prependOnceListener(event: "timeout", listener: () => void): this;\n }\n\n export interface ClientHttp2Session extends Http2Session {\n request(headers?: OutgoingHttpHeaders, options?: ClientSessionRequestOptions): ClientHttp2Stream;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n addListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "connect", session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket): boolean;\n emit(event: "stream", stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n on(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n once(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n prependListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n prependOnceListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n }\n\n export interface ServerHttp2Session extends Http2Session {\n readonly server: Http2Server | Http2SecureServer;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "connect", session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket): boolean;\n emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;\n prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n }\n\n // Http2Server\n\n export interface SessionOptions {\n maxDeflateDynamicTableSize?: number;\n maxReservedRemoteStreams?: number;\n maxSendHeaderBlockLength?: number;\n paddingStrategy?: number;\n peerMaxConcurrentStreams?: number;\n selectPadding?: (frameLen: number, maxFrameLen: number) => number;\n settings?: Settings;\n }\n\n export type ClientSessionOptions = SessionOptions;\n export type ServerSessionOptions = SessionOptions;\n\n export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions { }\n export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions { }\n\n export interface ServerOptions extends ServerSessionOptions {\n allowHTTP1?: boolean;\n }\n\n export interface SecureServerOptions extends SecureServerSessionOptions {\n allowHTTP1?: boolean;\n }\n\n export interface Http2Server extends net.Server {\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n addListener(event: "sessionError", listener: (err: Error) => void): this;\n addListener(event: "socketError", listener: (err: Error) => void): this;\n addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n addListener(event: "timeout", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean;\n emit(event: "sessionError", err: Error): boolean;\n emit(event: "socketError", err: Error): boolean;\n emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;\n emit(event: "timeout"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n on(event: "sessionError", listener: (err: Error) => void): this;\n on(event: "socketError", listener: (err: Error) => void): this;\n on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n on(event: "timeout", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n once(event: "sessionError", listener: (err: Error) => void): this;\n once(event: "socketError", listener: (err: Error) => void): this;\n once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n once(event: "timeout", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n prependListener(event: "sessionError", listener: (err: Error) => void): this;\n prependListener(event: "socketError", listener: (err: Error) => void): this;\n prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n prependListener(event: "timeout", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n prependOnceListener(event: "sessionError", listener: (err: Error) => void): this;\n prependOnceListener(event: "socketError", listener: (err: Error) => void): this;\n prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n prependOnceListener(event: "timeout", listener: () => void): this;\n }\n\n export interface Http2SecureServer extends tls.Server {\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n addListener(event: "sessionError", listener: (err: Error) => void): this;\n addListener(event: "socketError", listener: (err: Error) => void): this;\n addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n addListener(event: "timeout", listener: () => void): this;\n addListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean;\n emit(event: "sessionError", err: Error): boolean;\n emit(event: "socketError", err: Error): boolean;\n emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;\n emit(event: "timeout"): boolean;\n emit(event: "unknownProtocol", socket: tls.TLSSocket): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n on(event: "sessionError", listener: (err: Error) => void): this;\n on(event: "socketError", listener: (err: Error) => void): this;\n on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n on(event: "timeout", listener: () => void): this;\n on(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n once(event: "sessionError", listener: (err: Error) => void): this;\n once(event: "socketError", listener: (err: Error) => void): this;\n once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n once(event: "timeout", listener: () => void): this;\n once(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n prependListener(event: "sessionError", listener: (err: Error) => void): this;\n prependListener(event: "socketError", listener: (err: Error) => void): this;\n prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n prependListener(event: "timeout", listener: () => void): this;\n prependListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;\n prependOnceListener(event: "sessionError", listener: (err: Error) => void): this;\n prependOnceListener(event: "socketError", listener: (err: Error) => void): this;\n prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;\n prependOnceListener(event: "timeout", listener: () => void): this;\n prependOnceListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;\n }\n\n export interface Http2ServerRequest extends stream.Readable {\n headers: IncomingHttpHeaders;\n httpVersion: string;\n method: string;\n rawHeaders: string[];\n rawTrailers: string[];\n setTimeout(msecs: number, callback?: () => void): void;\n socket: net.Socket | tls.TLSSocket;\n stream: ServerHttp2Stream;\n trailers: IncomingHttpHeaders;\n url: string;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "aborted", hadError: boolean, code: number): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n }\n\n export interface Http2ServerResponse extends events.EventEmitter {\n addTrailers(trailers: OutgoingHttpHeaders): void;\n connection: net.Socket | tls.TLSSocket;\n end(callback?: () => void): void;\n end(data?: string | Buffer, callback?: () => void): void;\n end(data?: string | Buffer, encoding?: string, callback?: () => void): void;\n readonly finished: boolean;\n getHeader(name: string): string;\n getHeaderNames(): string[];\n getHeaders(): OutgoingHttpHeaders;\n hasHeader(name: string): boolean;\n readonly headersSent: boolean;\n removeHeader(name: string): void;\n sendDate: boolean;\n setHeader(name: string, value: number | string | string[]): void;\n setTimeout(msecs: number, callback?: () => void): void;\n socket: net.Socket | tls.TLSSocket;\n statusCode: number;\n statusMessage: \'\';\n stream: ServerHttp2Stream;\n write(chunk: string | Buffer, callback?: (err: Error) => void): boolean;\n write(chunk: string | Buffer, encoding?: string, callback?: (err: Error) => void): boolean;\n writeContinue(): void;\n writeHead(statusCode: number, headers?: OutgoingHttpHeaders): void;\n writeHead(statusCode: number, statusMessage?: string, headers?: OutgoingHttpHeaders): void;\n createPushResponse(headers: OutgoingHttpHeaders, callback: (err: Error | null, res: Http2ServerResponse) => void): void;\n\n addListener(event: string, listener: (...args: any[]) => void): this;\n addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n addListener(event: "close", listener: () => void): this;\n addListener(event: "drain", listener: () => void): this;\n addListener(event: "error", listener: (error: Error) => void): this;\n addListener(event: "finish", listener: () => void): this;\n\n emit(event: string | symbol, ...args: any[]): boolean;\n emit(event: "aborted", hadError: boolean, code: number): boolean;\n emit(event: "close"): boolean;\n emit(event: "drain"): boolean;\n emit(event: "error", error: Error): boolean;\n emit(event: "finish"): boolean;\n\n on(event: string, listener: (...args: any[]) => void): this;\n on(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n on(event: "close", listener: () => void): this;\n on(event: "drain", listener: () => void): this;\n on(event: "error", listener: (error: Error) => void): this;\n on(event: "finish", listener: () => void): this;\n\n once(event: string, listener: (...args: any[]) => void): this;\n once(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n once(event: "close", listener: () => void): this;\n once(event: "drain", listener: () => void): this;\n once(event: "error", listener: (error: Error) => void): this;\n once(event: "finish", listener: () => void): this;\n\n prependListener(event: string, listener: (...args: any[]) => void): this;\n prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n prependListener(event: "close", listener: () => void): this;\n prependListener(event: "drain", listener: () => void): this;\n prependListener(event: "error", listener: (error: Error) => void): this;\n prependListener(event: "finish", listener: () => void): this;\n\n prependOnceListener(event: string, listener: (...args: any[]) => void): this;\n prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;\n prependOnceListener(event: "close", listener: () => void): this;\n prependOnceListener(event: "drain", listener: () => void): this;\n prependOnceListener(event: "error", listener: (error: Error) => void): this;\n prependOnceListener(event: "finish", listener: () => void): this;\n }\n\n // Public API\n\n export namespace constants {\n export const NGHTTP2_SESSION_SERVER: number;\n export const NGHTTP2_SESSION_CLIENT: number;\n export const NGHTTP2_STREAM_STATE_IDLE: number;\n export const NGHTTP2_STREAM_STATE_OPEN: number;\n export const NGHTTP2_STREAM_STATE_RESERVED_LOCAL: number;\n export const NGHTTP2_STREAM_STATE_RESERVED_REMOTE: number;\n export const NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: number;\n export const NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: number;\n export const NGHTTP2_STREAM_STATE_CLOSED: number;\n export const NGHTTP2_NO_ERROR: number;\n export const NGHTTP2_PROTOCOL_ERROR: number;\n export const NGHTTP2_INTERNAL_ERROR: number;\n export const NGHTTP2_FLOW_CONTROL_ERROR: number;\n export const NGHTTP2_SETTINGS_TIMEOUT: number;\n export const NGHTTP2_STREAM_CLOSED: number;\n export const NGHTTP2_FRAME_SIZE_ERROR: number;\n export const NGHTTP2_REFUSED_STREAM: number;\n export const NGHTTP2_CANCEL: number;\n export const NGHTTP2_COMPRESSION_ERROR: number;\n export const NGHTTP2_CONNECT_ERROR: number;\n export const NGHTTP2_ENHANCE_YOUR_CALM: number;\n export const NGHTTP2_INADEQUATE_SECURITY: number;\n export const NGHTTP2_HTTP_1_1_REQUIRED: number;\n export const NGHTTP2_ERR_FRAME_SIZE_ERROR: number;\n export const NGHTTP2_FLAG_NONE: number;\n export const NGHTTP2_FLAG_END_STREAM: number;\n export const NGHTTP2_FLAG_END_HEADERS: number;\n export const NGHTTP2_FLAG_ACK: number;\n export const NGHTTP2_FLAG_PADDED: number;\n export const NGHTTP2_FLAG_PRIORITY: number;\n export const DEFAULT_SETTINGS_HEADER_TABLE_SIZE: number;\n export const DEFAULT_SETTINGS_ENABLE_PUSH: number;\n export const DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: number;\n export const DEFAULT_SETTINGS_MAX_FRAME_SIZE: number;\n export const MAX_MAX_FRAME_SIZE: number;\n export const MIN_MAX_FRAME_SIZE: number;\n export const MAX_INITIAL_WINDOW_SIZE: number;\n export const NGHTTP2_DEFAULT_WEIGHT: number;\n export const NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: number;\n export const NGHTTP2_SETTINGS_ENABLE_PUSH: number;\n export const NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: number;\n export const NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: number;\n export const NGHTTP2_SETTINGS_MAX_FRAME_SIZE: number;\n export const NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: number;\n export const PADDING_STRATEGY_NONE: number;\n export const PADDING_STRATEGY_MAX: number;\n export const PADDING_STRATEGY_CALLBACK: number;\n export const HTTP2_HEADER_STATUS: string;\n export const HTTP2_HEADER_METHOD: string;\n export const HTTP2_HEADER_AUTHORITY: string;\n export const HTTP2_HEADER_SCHEME: string;\n export const HTTP2_HEADER_PATH: string;\n export const HTTP2_HEADER_ACCEPT_CHARSET: string;\n export const HTTP2_HEADER_ACCEPT_ENCODING: string;\n export const HTTP2_HEADER_ACCEPT_LANGUAGE: string;\n export const HTTP2_HEADER_ACCEPT_RANGES: string;\n export const HTTP2_HEADER_ACCEPT: string;\n export const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: string;\n export const HTTP2_HEADER_AGE: string;\n export const HTTP2_HEADER_ALLOW: string;\n export const HTTP2_HEADER_AUTHORIZATION: string;\n export const HTTP2_HEADER_CACHE_CONTROL: string;\n export const HTTP2_HEADER_CONNECTION: string;\n export const HTTP2_HEADER_CONTENT_DISPOSITION: string;\n export const HTTP2_HEADER_CONTENT_ENCODING: string;\n export const HTTP2_HEADER_CONTENT_LANGUAGE: string;\n export const HTTP2_HEADER_CONTENT_LENGTH: string;\n export const HTTP2_HEADER_CONTENT_LOCATION: string;\n export const HTTP2_HEADER_CONTENT_MD5: string;\n export const HTTP2_HEADER_CONTENT_RANGE: string;\n export const HTTP2_HEADER_CONTENT_TYPE: string;\n export const HTTP2_HEADER_COOKIE: string;\n export const HTTP2_HEADER_DATE: string;\n export const HTTP2_HEADER_ETAG: string;\n export const HTTP2_HEADER_EXPECT: string;\n export const HTTP2_HEADER_EXPIRES: string;\n export const HTTP2_HEADER_FROM: string;\n export const HTTP2_HEADER_HOST: string;\n export const HTTP2_HEADER_IF_MATCH: string;\n export const HTTP2_HEADER_IF_MODIFIED_SINCE: string;\n export const HTTP2_HEADER_IF_NONE_MATCH: string;\n export const HTTP2_HEADER_IF_RANGE: string;\n export const HTTP2_HEADER_IF_UNMODIFIED_SINCE: string;\n export const HTTP2_HEADER_LAST_MODIFIED: string;\n export const HTTP2_HEADER_LINK: string;\n export const HTTP2_HEADER_LOCATION: string;\n export const HTTP2_HEADER_MAX_FORWARDS: string;\n export const HTTP2_HEADER_PREFER: string;\n export const HTTP2_HEADER_PROXY_AUTHENTICATE: string;\n export const HTTP2_HEADER_PROXY_AUTHORIZATION: string;\n export const HTTP2_HEADER_RANGE: string;\n export const HTTP2_HEADER_REFERER: string;\n export const HTTP2_HEADER_REFRESH: string;\n export const HTTP2_HEADER_RETRY_AFTER: string;\n export const HTTP2_HEADER_SERVER: string;\n export const HTTP2_HEADER_SET_COOKIE: string;\n export const HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: string;\n export const HTTP2_HEADER_TRANSFER_ENCODING: string;\n export const HTTP2_HEADER_TE: string;\n export const HTTP2_HEADER_UPGRADE: string;\n export const HTTP2_HEADER_USER_AGENT: string;\n export const HTTP2_HEADER_VARY: string;\n export const HTTP2_HEADER_VIA: string;\n export const HTTP2_HEADER_WWW_AUTHENTICATE: string;\n export const HTTP2_HEADER_HTTP2_SETTINGS: string;\n export const HTTP2_HEADER_KEEP_ALIVE: string;\n export const HTTP2_HEADER_PROXY_CONNECTION: string;\n export const HTTP2_METHOD_ACL: string;\n export const HTTP2_METHOD_BASELINE_CONTROL: string;\n export const HTTP2_METHOD_BIND: string;\n export const HTTP2_METHOD_CHECKIN: string;\n export const HTTP2_METHOD_CHECKOUT: string;\n export const HTTP2_METHOD_CONNECT: string;\n export const HTTP2_METHOD_COPY: string;\n export const HTTP2_METHOD_DELETE: string;\n export const HTTP2_METHOD_GET: string;\n export const HTTP2_METHOD_HEAD: string;\n export const HTTP2_METHOD_LABEL: string;\n export const HTTP2_METHOD_LINK: string;\n export const HTTP2_METHOD_LOCK: string;\n export const HTTP2_METHOD_MERGE: string;\n export const HTTP2_METHOD_MKACTIVITY: string;\n export const HTTP2_METHOD_MKCALENDAR: string;\n export const HTTP2_METHOD_MKCOL: string;\n export const HTTP2_METHOD_MKREDIRECTREF: string;\n export const HTTP2_METHOD_MKWORKSPACE: string;\n export const HTTP2_METHOD_MOVE: string;\n export const HTTP2_METHOD_OPTIONS: string;\n export const HTTP2_METHOD_ORDERPATCH: string;\n export const HTTP2_METHOD_PATCH: string;\n export const HTTP2_METHOD_POST: string;\n export const HTTP2_METHOD_PRI: string;\n export const HTTP2_METHOD_PROPFIND: string;\n export const HTTP2_METHOD_PROPPATCH: string;\n export const HTTP2_METHOD_PUT: string;\n export const HTTP2_METHOD_REBIND: string;\n export const HTTP2_METHOD_REPORT: string;\n export const HTTP2_METHOD_SEARCH: string;\n export const HTTP2_METHOD_TRACE: string;\n export const HTTP2_METHOD_UNBIND: string;\n export const HTTP2_METHOD_UNCHECKOUT: string;\n export const HTTP2_METHOD_UNLINK: string;\n export const HTTP2_METHOD_UNLOCK: string;\n export const HTTP2_METHOD_UPDATE: string;\n export const HTTP2_METHOD_UPDATEREDIRECTREF: string;\n export const HTTP2_METHOD_VERSION_CONTROL: string;\n export const HTTP_STATUS_CONTINUE: number;\n export const HTTP_STATUS_SWITCHING_PROTOCOLS: number;\n export const HTTP_STATUS_PROCESSING: number;\n export const HTTP_STATUS_OK: number;\n export const HTTP_STATUS_CREATED: number;\n export const HTTP_STATUS_ACCEPTED: number;\n export const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: number;\n export const HTTP_STATUS_NO_CONTENT: number;\n export const HTTP_STATUS_RESET_CONTENT: number;\n export const HTTP_STATUS_PARTIAL_CONTENT: number;\n export const HTTP_STATUS_MULTI_STATUS: number;\n export const HTTP_STATUS_ALREADY_REPORTED: number;\n export const HTTP_STATUS_IM_USED: number;\n export const HTTP_STATUS_MULTIPLE_CHOICES: number;\n export const HTTP_STATUS_MOVED_PERMANENTLY: number;\n export const HTTP_STATUS_FOUND: number;\n export const HTTP_STATUS_SEE_OTHER: number;\n export const HTTP_STATUS_NOT_MODIFIED: number;\n export const HTTP_STATUS_USE_PROXY: number;\n export const HTTP_STATUS_TEMPORARY_REDIRECT: number;\n export const HTTP_STATUS_PERMANENT_REDIRECT: number;\n export const HTTP_STATUS_BAD_REQUEST: number;\n export const HTTP_STATUS_UNAUTHORIZED: number;\n export const HTTP_STATUS_PAYMENT_REQUIRED: number;\n export const HTTP_STATUS_FORBIDDEN: number;\n export const HTTP_STATUS_NOT_FOUND: number;\n export const HTTP_STATUS_METHOD_NOT_ALLOWED: number;\n export const HTTP_STATUS_NOT_ACCEPTABLE: number;\n export const HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: number;\n export const HTTP_STATUS_REQUEST_TIMEOUT: number;\n export const HTTP_STATUS_CONFLICT: number;\n export const HTTP_STATUS_GONE: number;\n export const HTTP_STATUS_LENGTH_REQUIRED: number;\n export const HTTP_STATUS_PRECONDITION_FAILED: number;\n export const HTTP_STATUS_PAYLOAD_TOO_LARGE: number;\n export const HTTP_STATUS_URI_TOO_LONG: number;\n export const HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: number;\n export const HTTP_STATUS_RANGE_NOT_SATISFIABLE: number;\n export const HTTP_STATUS_EXPECTATION_FAILED: number;\n export const HTTP_STATUS_TEAPOT: number;\n export const HTTP_STATUS_MISDIRECTED_REQUEST: number;\n export const HTTP_STATUS_UNPROCESSABLE_ENTITY: number;\n export const HTTP_STATUS_LOCKED: number;\n export const HTTP_STATUS_FAILED_DEPENDENCY: number;\n export const HTTP_STATUS_UNORDERED_COLLECTION: number;\n export const HTTP_STATUS_UPGRADE_REQUIRED: number;\n export const HTTP_STATUS_PRECONDITION_REQUIRED: number;\n export const HTTP_STATUS_TOO_MANY_REQUESTS: number;\n export const HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: number;\n export const HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: number;\n export const HTTP_STATUS_INTERNAL_SERVER_ERROR: number;\n export const HTTP_STATUS_NOT_IMPLEMENTED: number;\n export const HTTP_STATUS_BAD_GATEWAY: number;\n export const HTTP_STATUS_SERVICE_UNAVAILABLE: number;\n export const HTTP_STATUS_GATEWAY_TIMEOUT: number;\n export const HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: number;\n export const HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: number;\n export const HTTP_STATUS_INSUFFICIENT_STORAGE: number;\n export const HTTP_STATUS_LOOP_DETECTED: number;\n export const HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: number;\n export const HTTP_STATUS_NOT_EXTENDED: number;\n export const HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: number;\n }\n\n export function getDefaultSettings(): Settings;\n export function getPackedSettings(settings: Settings): Settings;\n export function getUnpackedSettings(buf: Buffer | Uint8Array): Settings;\n\n export function createServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server;\n export function createServer(options: ServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server;\n\n export function createSecureServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer;\n export function createSecureServer(options: SecureServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer;\n\n export function connect(authority: string | url.URL, listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session;\n export function connect(authority: string | url.URL, options?: ClientSessionOptions | SecureClientSessionOptions, listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session;\n}\n\ndeclare module "perf_hooks" {\n export interface PerformanceEntry {\n /**\n * The total number of milliseconds elapsed for this entry.\n * This value will not be meaningful for all Performance Entry types.\n */\n readonly duration: number;\n\n /**\n * The name of the performance entry.\n */\n readonly name: string;\n\n /**\n * The high resolution millisecond timestamp marking the starting time of the Performance Entry.\n */\n readonly startTime: number;\n\n /**\n * The type of the performance entry.\n * Currently it may be one of: \'node\', \'mark\', \'measure\', \'gc\', or \'function\'.\n */\n readonly entryType: string;\n\n /**\n * When performanceEntry.entryType is equal to \'gc\', the performance.kind property identifies\n * the type of garbage collection operation that occurred.\n * The value may be one of perf_hooks.constants.\n */\n readonly kind?: number;\n }\n\n export interface PerformanceNodeTiming extends PerformanceEntry {\n /**\n * The high resolution millisecond timestamp at which the Node.js process completed bootstrap.\n */\n readonly bootstrapComplete: number;\n\n /**\n * The high resolution millisecond timestamp at which cluster processing ended.\n */\n readonly clusterSetupEnd: number;\n\n /**\n * The high resolution millisecond timestamp at which cluster processing started.\n */\n readonly clusterSetupStart: number;\n\n /**\n * The high resolution millisecond timestamp at which the Node.js event loop exited.\n */\n readonly loopExit: number;\n\n /**\n * The high resolution millisecond timestamp at which the Node.js event loop started.\n */\n readonly loopStart: number;\n\n /**\n * The high resolution millisecond timestamp at which main module load ended.\n */\n readonly moduleLoadEnd: number;\n\n /**\n * The high resolution millisecond timestamp at which main module load started.\n */\n readonly moduleLoadStart: number;\n\n /**\n * The high resolution millisecond timestamp at which the Node.js process was initialized.\n */\n readonly nodeStart: number;\n\n /**\n * The high resolution millisecond timestamp at which preload module load ended.\n */\n readonly preloadModuleLoadEnd: number;\n\n /**\n * The high resolution millisecond timestamp at which preload module load started.\n */\n readonly preloadModuleLoadStart: number;\n\n /**\n * The high resolution millisecond timestamp at which third_party_main processing ended.\n */\n readonly thirdPartyMainEnd: number;\n\n /**\n * The high resolution millisecond timestamp at which third_party_main processing started.\n */\n readonly thirdPartyMainStart: number;\n\n /**\n * The high resolution millisecond timestamp at which the V8 platform was initialized.\n */\n readonly v8Start: number;\n }\n\n export interface Performance {\n /**\n * If name is not provided, removes all PerformanceFunction objects from the Performance Timeline.\n * If name is provided, removes entries with name.\n * @param name\n */\n clearFunctions(name?: string): void;\n\n /**\n * If name is not provided, removes all PerformanceMark objects from the Performance Timeline.\n * If name is provided, removes only the named mark.\n * @param name\n */\n clearMarks(name?: string): void;\n\n /**\n * If name is not provided, removes all PerformanceMeasure objects from the Performance Timeline.\n * If name is provided, removes only objects whose performanceEntry.name matches name.\n */\n clearMeasures(name?: string): void;\n\n /**\n * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime.\n * @return list of all PerformanceEntry objects\n */\n getEntries(): PerformanceEntry[];\n\n /**\n * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime\n * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type.\n * @param name\n * @param type\n * @return list of all PerformanceEntry objects\n */\n getEntriesByName(name: string, type?: string): PerformanceEntry[];\n\n /**\n * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime\n * whose performanceEntry.entryType is equal to type.\n * @param type\n * @return list of all PerformanceEntry objects\n */\n getEntriesByType(type: string): PerformanceEntry[];\n\n /**\n * Creates a new PerformanceMark entry in the Performance Timeline.\n * A PerformanceMark is a subclass of PerformanceEntry whose performanceEntry.entryType is always \'mark\',\n * and whose performanceEntry.duration is always 0.\n * Performance marks are used to mark specific significant moments in the Performance Timeline.\n * @param name\n */\n mark(name?: string): void;\n\n /**\n * Creates a new PerformanceMeasure entry in the Performance Timeline.\n * A PerformanceMeasure is a subclass of PerformanceEntry whose performanceEntry.entryType is always \'measure\',\n * and whose performanceEntry.duration measures the number of milliseconds elapsed since startMark and endMark.\n *\n * The startMark argument may identify any existing PerformanceMark in the the Performance Timeline, or may identify\n * any of the timestamp properties provided by the PerformanceNodeTiming class. If the named startMark does not exist,\n * then startMark is set to timeOrigin by default.\n *\n * The endMark argument must identify any existing PerformanceMark in the the Performance Timeline or any of the timestamp\n * properties provided by the PerformanceNodeTiming class. If the named endMark does not exist, an error will be thrown.\n * @param name\n * @param startMark\n * @param endMark\n */\n measure(name: string, startMark: string, endMark: string): void;\n\n /**\n * An instance of the PerformanceNodeTiming class that provides performance metrics for specific Node.js operational milestones.\n */\n readonly nodeTiming: PerformanceNodeTiming;\n\n /**\n * @return the current high resolution millisecond timestamp\n */\n now(): number;\n\n /**\n * The timeOrigin specifies the high resolution millisecond timestamp from which all performance metric durations are measured.\n */\n readonly timeOrigin: number;\n\n /**\n * Wraps a function within a new function that measures the running time of the wrapped function.\n * A PerformanceObserver must be subscribed to the \'function\' event type in order for the timing details to be accessed.\n * @param fn\n */\n timerify any>(fn: T): T;\n }\n\n export interface PerformanceObserverEntryList {\n /**\n * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime.\n */\n getEntries(): PerformanceEntry[];\n\n /**\n * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime\n * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type.\n */\n getEntriesByName(name: string, type?: string): PerformanceEntry[];\n\n /**\n * @return Returns a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime\n * whose performanceEntry.entryType is equal to type.\n */\n getEntriesByType(type: string): PerformanceEntry[];\n }\n\n export type PerformanceObserverCallback = (list: PerformanceObserverEntryList, observer: PerformanceObserver) => void;\n\n export class PerformanceObserver {\n constructor(callback: PerformanceObserverCallback);\n\n /**\n * Disconnects the PerformanceObserver instance from all notifications.\n */\n disconnect(): void;\n\n /**\n * Subscribes the PerformanceObserver instance to notifications of new PerformanceEntry instances identified by options.entryTypes.\n * When options.buffered is false, the callback will be invoked once for every PerformanceEntry instance.\n * Property buffered defaults to false.\n * @param options\n */\n observe(options: { entryTypes: string[], buffered?: boolean }): void;\n }\n\n export namespace constants {\n export const NODE_PERFORMANCE_GC_MAJOR: number;\n export const NODE_PERFORMANCE_GC_MINOR: number;\n export const NODE_PERFORMANCE_GC_INCREMENTAL: number;\n export const NODE_PERFORMANCE_GC_WEAKCB: number;\n }\n\n const performance: Performance;\n}\n',e)]))])))),$l(Zn(),Qn(xl(Zn(),Qn(kl(dt([new Il(16,Qn(new Ya(94,"https://github.com/fable-compiler/ts2fable"))),new Il(0,new nl(1))]),Qn(Za.createElement("span",{},"Github")))))))]));var n,t,r,o,i}(n),Za.createElement("div",{className:"page-content"},(r=dt([new Cl(0,t),new Cl(1,new nl(3))]),o=Qn(Za.createElement("span",{className:"title"},"We are getting everything ready for you")),ml(ll(r,((e,n)=>{switch(n.tag){case 0:return n.fields[0]?pl(e,n):e;case 2:return dl(e,n.fields[0]);case 3:return ul(e,n.fields[0]);case 4:return fl(e,n.fields[0]);default:return ul(e,tl(n.fields[0]))}}),"pageloader"),((e,n)=>Za.createElement("div",Ii(e,1),...n)),o)),Ol(dt([new Ll(3),new Ll(2)]),dt([Rl(Qn(new Pl(0,new Qa(0),new _l(2))),Qn(Dl(Zn(),Qn(Ml(Zn(),Qn(gl(Qn(new sl(2,Qn(new il(5,new Qa(0),new ol(0))))),Qn("Type or paste TypeScript definition")))))))),Rl(Qn(new Pl(0,new Qa(0),new _l(2))),Qn(Dl(Zn(),Qn(Ml(Zn(),Qn(gl(Qn(new sl(2,Qn(new il(5,new Qa(0),new ol(0))))),Qn("F# code"))))))))])),Ol(dt([new Ll(3),new Ll(2),new Ll(10,Qn(["style",{height:"100%"}]))]),dt([Rl(Qn(new Pl(0,new Qa(0),new _l(2))),Qn(Za.createElement(ql,{language:"typescript",onChange:e=>{n(new ld(2,e))},value:e.HtmlCode,editorDidMount:()=>{n(new ld(0))}}))),Rl(Qn(new Pl(0,new Qa(0),new _l(2))),dt([Za.createElement("div",{className:"copy-button"},Za.createElement(Kl,{value:e.FSharpCode})),Za.createElement(ql,{language:"fsharp",isReadOnly:!0,value:e.FSharpCode,editorDidMount:()=>{n(new ld(1))}})]))]))));var r,o}!function(e){!function(e,n){const t=n.init(e),r=t[0],o=new Xc(10);let i=!1,s=r;const a=A(1,n.syncDispatch,[e=>{if(i)ed(o,e);else{i=!0;let t=Ln(e);for(;null!=t;){const e=On(t);try{const t=n.update(e,s),r=t[0];n.setState(r,a),za((t=>{n.onError([hn(pn("Error in command while handling: %A"))(e),t])}),a,t[1]),s=r}catch(t){n.onError([hn(pn("Unable to process the message: %A"))(e),t])}t=Qc(o)}i=!1}}]);n.setState(r,a),za((e=>{n.onError(["Error intitializing:",e])}),a,pt(dt([(()=>{try{return n.subscribe(r)}catch(e){return n.onError(["Unable to subscribe:",e]),Ka()}})(),t[1]])))}(void 0,e)}(("elmish-app",td=function(e,n,t){return new nd((function(e){return[new ad("","",new sd(0),new sd(0)),Ka()]}),((e,n)=>function(e,n){switch(e.tag){case 0:return[new ad(n.HtmlCode,n.FSharpCode,new sd(1),n.FSharpEditorState),Ka()];case 1:return[new ad(n.HtmlCode,n.FSharpCode,n.HtmlEditorState,new sd(1)),Ka()];case 3:return[new ad(n.HtmlCode,cd(n.HtmlCode),n.HtmlEditorState,n.FSharpEditorState),Ka()];default:return[new ad(e.fields[0],n.FSharpCode,n.HtmlEditorState,n.FSharpEditorState),Va(new ld(3))]}}(e,n)),(e=>Ka()),t,((e,n)=>{t(e,n)}),(e=>{var n,t;n=e[0],t=e[1],console.error(Ln(n),t)}),C(2,(e=>e)))}(0,0,((e,n)=>ud(e,n))),function(e,n,t){let r;return function(e,n){return new nd(n.init,n.update,n.subscribe,n.view,e,n.onError,n.syncDispatch)}(((o,i)=>{null!=r&&window.cancelAnimationFrame(r),r=window.requestAnimationFrame((r=>{rd.render(e(((e,n)=>e===n),C(2,function(e){return function(e,n){if(null==n||1===n.length)return n;if(k in n)return n.__CURRIED__;switch(e){case 2:return e=>t=>n(e,t);case 3:return e=>t=>r=>n(e,t,r);case 4:return e=>t=>r=>o=>n(e,t,r,o);case 5:return e=>t=>r=>o=>i=>n(e,t,r,o,i);case 6:return e=>t=>r=>o=>i=>s=>n(e,t,r,o,i,s);case 7:return e=>t=>r=>o=>i=>s=>a=>n(e,t,r,o,i,s,a);case 8:return e=>t=>r=>o=>i=>s=>a=>l=>n(e,t,r,o,i,s,a,l);default:throw new Error("Currying to more than 8-arity is not supported: "+e)}}(2,e.view)}(t)),o,i),document.getElementById(n))}))}),t)}(((e,n,t,r)=>function(e,n,t,r){return Za.createElement(id,new od(t,(()=>n(t,r)),e))}(e,n,t,r)),"elmish-app",td)))},9973:()=>{},3411:e=>{function n(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}n.keys=()=>[],n.resolve=n,n.id=3411,e.exports=n},2370:()=>{},2183:()=>{},3024:()=>{},2715:()=>{},3611:()=>{},8353:()=>{},3454:()=>{}},t={};function r(e){var o=t[e];if(void 0!==o)return o.exports;var i=t[e]={exports:{}};return n[e].call(i.exports,i,i.exports,r),i.exports}r.m=n,e=[],r.O=(n,t,o,i)=>{if(!t){var s=1/0;for(c=0;c=i)&&Object.keys(r.O).every((e=>r.O[e](t[l])))?t.splice(l--,1):(a=!1,i0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[t,o,i]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={143:0};r.O.j=n=>0===e[n];var n=(n,t)=>{var o,i,[s,a,l]=t,c=0;for(o in a)r.o(a,o)&&(r.m[o]=a[o]);for(l&&l(r),n&&n(t);cr(8578))),r.O(void 0,[736],(()=>r(4932)));var o=r.O(void 0,[736],(()=>r(9973)));o=r.O(o)})(); \ No newline at end of file diff --git a/index.html b/index.html index f3c0da1..5c257ab 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -ts2fable
\ No newline at end of file +ts2fable
\ No newline at end of file