459 lines
714 KiB
JavaScript
Raw Normal View History

(function(){"use strict";class yo{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(t){setTimeout(()=>{throw t.stack?ot.isErrorNoTelemetry(t)?new ot(t.message+`
`+t.stack):new Error(t.message+`
`+t.stack):t},0)}}emit(t){this.listeners.forEach(n=>{n(t)})}onUnexpectedError(t){this.unexpectedErrorHandler(t),this.emit(t)}onUnexpectedExternalError(t){this.unexpectedErrorHandler(t)}}const ji=new yo;function Gi(e){Ji(e)||ji.onUnexpectedError(e)}function Ph(e){Ji(e)||ji.onUnexpectedExternalError(e)}function $i(e){if(e instanceof Error){const{name:t,message:n}=e,i=e.stacktrace||e.stack;return{$isError:!0,name:t,message:n,stack:i,noTelemetry:ot.isErrorNoTelemetry(e)}}return e}const en="Canceled";function Ji(e){return e instanceof xo?!0:e instanceof Error&&e.name===en&&e.message===en}class xo extends Error{constructor(){super(en),this.name=this.message}}function qh(){const e=new Error(en);return e.name=e.message,e}function Oh(e){return e?new Error(`Illegal argument: ${e}`):new Error("Illegal argument")}function Vh(e){return e?new Error(`Illegal state: ${e}`):new Error("Illegal state")}class jh extends Error{constructor(t){super("NotSupported"),t&&(this.message=t)}}class ot extends Error{constructor(t){super(t),this.name="CodeExpectedError"}static fromError(t){if(t instanceof ot)return t;const n=new ot;return n.message=t.message,n.stack=t.stack,n}static isErrorNoTelemetry(t){return t.name==="CodeExpectedError"}}class Ue extends Error{constructor(t){super(t||"An unexpected bug occurred."),Object.setPrototypeOf(this,Ue.prototype)}}function To(e,t){const n=this;let i=!1,r;return function(){if(i)return r;if(i=!0,t)try{r=e.apply(n,arguments)}finally{t()}else r=e.apply(n,arguments);return r}}var tn;(function(e){function t(y){return y&&typeof y=="object"&&typeof y[Symbol.iterator]=="function"}e.is=t;const n=Object.freeze([]);function i(){return n}e.empty=i;function*r(y){yield y}e.single=r;function s(y){return t(y)?y:r(y)}e.wrap=s;function a(y){return y||n}e.from=a;function*o(y){for(let C=y.length-1;C>=0;C--)yield y[C]}e.reverse=o;function l(y){return!y||y[Symbol.iterator]().next().done===!0}e.isEmpty=l;function u(y){return y[Symbol.iterator]().next().value}e.first=u;function c(y,C){for(const R of y)if(C(R))return!0;return!1}e.some=c;function h(y,C){for(const R of y)if(C(R))return R}e.find=h;function*f(y,C){for(const R of y)C(R)&&(yield R)}e.filter=f;function*p(y,C){let R=0;for(const B of y)yield C(B,R++)}e.map=p;function*g(...y){for(const C of y)yield*C}e.concat=g;function m(y,C,R){let B=R;for(const v of y)B=C(B,v);return B}e.reduce=m;function*w(y,C,R=y.length){for(C<0&&(C+=y.length),R<0?R+=y.length:R>y.length&&(R=y.length);C<R;C++)yield y[C]}e.slice=w;function T(y,C=Number.POSITIVE_INFINITY){const R=[];if(C===0)return[R,y];const B=y[Symbol.iterator]();for(let v=0;v<C;v++){const b=B.next();if(b.done)return[R,e.empty()];R.push(b.value)}return[R,{[Symbol.iterator](){return B}}]}e.consume=T;async function _(y){const C=[];for await(const R of y)C.push(R);return Promise.resolve(C)}e.asyncToArray=_})(tn||(tn={}));const ko=!1;let fe=null;function So(e){fe=e}if(ko){const e="__is_disposable_tracked__";So(new class{trackDisposable(t){const n=new Error("Potentially leaked disposable").stack;setTimeout(()=>{t[e]||console.log(n)},3e3)}setParent(t,n){if(t&&t!==qe.None)try{t[e]=!0}catch{}}markAsDisposed(t){if(t&&t!==qe.None)try{t[e]=!0}catch{}}markAsSingleton(t){}})}function kt(e){return fe?.trackDisposable(e),e}function St(e){fe?.markAsDisposed(e)}function nn(e,t){fe?.setParent(e,t)}function Ao(e,t){if(fe)for(const n of e)fe.setParent(n,t)}function Gh(e){return fe?.markAsSingleton(e),e}function $h(e){return typeof e.dispose=="function"&&e.dispose.length===0}function Bn(e){if(tn.is(e)){const t=[];for(const n of e)if(n)try{n.dispose()}catch(i){t.push(i)}if(t.length===1)throw t[0];if(t.length>1)throw new AggregateError(t,"Encountered errors while disposing of store");return Array.isArray(e)?[]:e}else if(e)return e.dispose(),e}function Lo(...e){const t=rn(()=>Bn(e));return Ao(e,t),t}function rn(e){const t=kt({dispose:To(()=>{St(t),e()})});return t}class lt{constructor(){this._toDispose=new Set,this._isDisposed=!1,kt(this)}dispose(){this._isDisposed||(St(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(th
`).slice(2).join(`
`))}}class on{constructor(t){this.value=t}}const Do=2,No=(e,t)=>{if(e instanceof on)t(e);else for(let n=0;n<e.length;n++){const i=e[n];i&&t(i)}},Lt=Eo?new FinalizationRegistry(e=>{typeof e=="string"&&(console.warn("[LEAKING LISTENER] GC'ed a listener that was NOT yet disposed. This is where is was created:"),console.warn(e))}):void 0;class me{constructor(t){var n,i,r,s,a;this._size=0,this._options=t,this._leakageMon=Yi>0||!((n=this._options)===null||n===void 0)&&n.leakWarningThreshold?new Ro((r=(i=this._options)===null||i===void 0?void 0:i.leakWarningThreshold)!==null&&r!==void 0?r:Yi):void 0,this._perfMon=!((s=this._options)===null||s===void 0)&&s._profName?new ut(this._options._profName):void 0,this._deliveryQueue=(a=this._options)===null||a===void 0?void 0:a.deliveryQueue}dispose(){var t,n,i,r;if(!this._disposed){if(this._disposed=!0,((t=this._deliveryQueue)===null||t===void 0?void 0:t.current)===this&&this._deliveryQueue.reset(),this._listeners){if(Xi){const s=this._listeners;queueMicrotask(()=>{No(s,a=>{var o;return(o=a.stack)===null||o===void 0?void 0:o.print()})})}this._listeners=void 0,this._size=0}(i=(n=this._options)===null||n===void 0?void 0:n.onDidRemoveLastListener)===null||i===void 0||i.call(n),(r=this._leakageMon)===null||r===void 0||r.dispose()}}get event(){var t;return(t=this._event)!==null&&t!==void 0||(this._event=(n,i,r)=>{var s,a,o,l,u;if(this._leakageMon&&this._size>this._leakageMon.threshold*3)return console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`),qe.None;if(this._disposed)return qe.None;i&&(n=n.bind(i));const c=new on(n);let h,f;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(c.stack=At.create(),h=this._leakageMon.check(c.stack,this._size+1)),Xi&&(c.stack=f??At.create()),this._listeners?this._listeners instanceof on?((u=this._deliveryQueue)!==null&&u!==void 0||(this._deliveryQueue=new Zi),this._listeners=[this._listeners,c]):this._listeners.push(c):((a=(s=this._options)===null||s===void 0?void 0:s.onWillAddFirstListener)===null||a===void 0||a.call(s,this),this._listeners=c,(l=(o=this._options)===null||o===void 0?void 0:o.onDidAddFirstListener)===null||l===void 0||l.call(o,this)),this._size++;const p=rn(()=>{Lt?.unregister(p),h?.(),this._removeListener(c)});if(r instanceof lt?r.add(p):Array.isArray(r)&&r.push(p),Lt){const g=new Error().stack.split(`
`).slice(2).join(`
`).trim();Lt.register(p,g,p)}return p}),this._event}_removeListener(t){var n,i,r,s;if((i=(n=this._options)===null||n===void 0?void 0:n.onWillRemoveListener)===null||i===void 0||i.call(n,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(s=(r=this._options)===null||r===void 0?void 0:r.onDidRemoveLastListener)===null||s===void 0||s.call(r,this),this._size=0;return}const a=this._listeners,o=a.indexOf(t);if(o===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,a[o]=void 0;const l=this._deliveryQueue.current===this;if(this._size*Do<=a.length){let u=0;for(let c=0;c<a.length;c++)a[c]?a[u++]=a[c]:l&&(this._deliveryQueue.end--,u<this._deliveryQueue.i&&this._deliveryQueue.i--);a.length=u}}_deliver(t,n){var i;if(!t)return;const r=((i=this._options)===null||i===void 0?void 0:i.onListenerError)||Gi;if(!r){t.value(n);return}try{t.value(n)}catch(s){r(s)}}_deliverQueue(t){const n=t.current._listeners;for(;t.i<t.end;)this._deliver(n[t.i++],t.value);t.reset()}fire(t){var n,i,r,s;if(!((n=this._deliveryQueue)===null||n===void 0)&&n.current&&(this._deliverQueue(this._deliveryQueue),(i=this._perfMon)===null||i===void 0||i.stop()),(r=this._perfMon)===null||r===void 0||r.start(this._size),this._listeners)if(this._listeners instanceof on)this._deliver(this._listeners,t);else{const a=this._deliveryQueue;a.enqueue(this,t,this._listeners.length),this._deliverQueue(a)}(s=this._perfMon)===null||s===void 0||s.stop()}hasListeners(){return this._size>0}}const Zh=()=>new Zi;class Zi{constructor(){this.i=-1,this.end=0}enqueue(t,n,i){this.i=0,this.end=i,this.current=t,this.value=n}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class Io extends me{constructor(t){super(t),this._isPaused=0,this._eventQueue=new Qi,this._mergeFn=t?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused===0)if(this._mergeFn){if(this._eventQueue.size>0){const t=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(t))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(t){this._size&&(this._isPaused!==0?this._eventQueue.push(t):super.fire(t))}}class Kh extends Io{constructor(t){var n;super(t),this._delay=(n=t.delay)!==null&&n!==void 0?n:100}fire(t){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(t)}}class ed extends me{constructor(t){super(t),this._queuedEvents=[],this._mergeFn=t?.merge}fire(t){this.hasListeners()&&(this._queuedEvents.push(t),this._queuedEvents.length===1&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(n=>super.fire(n)),this._queuedEvents=[]}))}}class td{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new me({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(t){const n={event:t,listener:null};this.events.push(n),this.hasListeners&&this.hook(n);const i=()=>{this.hasListeners&&this.unhook(n);const r=this.events.indexOf(n);this.events.splice(r,1)};return toDisposable(createSingleCallFunction(i))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach(t=>this.hook(t))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach(t=>this.unhook(t))}hook(t){t.listener=t.event(n=>this.emitter.fire(n))}unhook(t){var n;(n=t.listener)===null||n===void 0||n.dispose(),t.listener=null}dispose(){var t;this.emitter.dispose();for(const n of this.events)(t=n.listener)===null||t===void 0||t.dispose();this.events=[]}}class nd{constructor(){this.buffers=[]}wrapEvent(t){return(n,i,r)=>t(s=>{const a=this.buffers[this.buffers.length-1];a?a.push(()=>n.call(i,s)):n.call(i,s)},void 0,r)}bufferEvents(t){const n=[];this.buffers.push(n);const i=t();return this.buffers.pop(),n.forEach(r=>r()),i}}class id{constructor(){this.listening=!1,this.inputEvent=an.None,this.in
`)>=0;let n=null;try{n=strings.createRegExp(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:t,global:!0,unicode:!0})}catch{return null}if(!n)return null;let i=!this.isRegex&&!t;return i&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(i=this.matchCase),new SearchData(n,this.wordSeparators?getMapForWordSeparators(this.wordSeparators,[]):null,i?this.searchString:null)}}function Du(e){if(!e||e.length===0)return!1;for(let t=0,n=e.length;t<n;t++){const i=e.charCodeAt(t);if(i===10)return!0;if(i===92){if(t++,t>=n)break;const r=e.charCodeAt(t);if(r===110||r===114||r===87)return!0}}return!1}function Wt(e,t,n){if(!n)return new FindMatch(e,null);const i=[];for(let r=0,s=t.length;r<s;r++)i[r]=t[r];return new FindMatch(e,i)}class Os{constructor(t){const n=[];let i=0;for(let r=0,s=t.length;r<s;r++)t.charCodeAt(r)===10&&(n[i++]=r);this._lineFeedsOffsets=n}findLineFeedCountBeforeOffset(t){const n=this._lineFeedsOffsets;let i=0,r=n.length-1;if(r===-1||t<=n[0])return 0;for(;i<r;){const s=i+((r-i)/2>>0);n[s]>=t?r=s-1:n[s+1]>=t?(i=s,r=s):i=s+1}return i+1}}class lf{static findMatches(t,n,i,r,s){const a=n.parseSearchRequest();return a?a.regex.multiline?this._doFindMatchesMultiline(t,i,new Bt(a.wordSeparators,a.regex),r,s):this._doFindMatchesLineByLine(t,i,a,r,s):[]}static _getMultilineMatchRange(t,n,i,r,s,a){let o,l=0;r?(l=r.findLineFeedCountBeforeOffset(s),o=n+s+l):o=n+s;let u;if(r){const p=r.findLineFeedCountBeforeOffset(s+a.length)-l;u=o+a.length+p}else u=o+a.length;const c=t.getPositionAt(o),h=t.getPositionAt(u);return new Range(c.lineNumber,c.column,h.lineNumber,h.column)}static _doFindMatchesMultiline(t,n,i,r,s){const a=t.getOffsetAt(n.getStartPosition()),o=t.getValueInRange(n,1),l=t.getEOL()===`\r
`?new Os(o):null,u=[];let c=0,h;for(i.reset(0);h=i.next(o);)if(u[c++]=Wt(this._getMultilineMatchRange(t,a,o,l,h.index,h[0]),h,r),c>=s)return u;return u}static _doFindMatchesLineByLine(t,n,i,r,s){const a=[];let o=0;if(n.startLineNumber===n.endLineNumber){const u=t.getLineContent(n.startLineNumber).substring(n.startColumn-1,n.endColumn-1);return o=this._findMatchesInLine(i,u,n.startLineNumber,n.startColumn-1,o,a,r,s),a}const l=t.getLineContent(n.startLineNumber).substring(n.startColumn-1);o=this._findMatchesInLine(i,l,n.startLineNumber,n.startColumn-1,o,a,r,s);for(let u=n.startLineNumber+1;u<n.endLineNumber&&o<s;u++)o=this._findMatchesInLine(i,t.getLineContent(u),u,0,o,a,r,s);if(o<s){const u=t.getLineContent(n.endLineNumber).substring(0,n.endColumn-1);o=this._findMatchesInLine(i,u,n.endLineNumber,0,o,a,r,s)}return a}static _findMatchesInLine(t,n,i,r,s,a,o,l){const u=t.wordSeparators;if(!o&&t.simpleSearch){const f=t.simpleSearch,p=f.length,g=n.length;let m=-p;for(;(m=n.indexOf(f,m+p))!==-1;)if((!u||Vs(u,n,g,m,p))&&(a[s++]=new FindMatch(new Range(i,m+1+r,i,m+1+p+r),null),s>=l))return s;return s}const c=new Bt(t.wordSeparators,t.regex);let h;c.reset(0);do if(h=c.next(n),h&&(a[s++]=Wt(new Range(i,h.index+1+r,i,h.index+1+h[0].length+r),h,o),s>=l))return s;while(h);return s}static findNextMatch(t,n,i,r){const s=n.parseSearchRequest();if(!s)return null;const a=new Bt(s.wordSeparators,s.regex);return s.regex.multiline?this._doFindNextMatchMultiline(t,i,a,r):this._doFindNextMatchLineByLine(t,i,a,r)}static _doFindNextMatchMultiline(t,n,i,r){const s=new Position(n.lineNumber,1),a=t.getOffsetAt(s),o=t.getLineCount(),l=t.getValueInRange(new Range(s.lineNumber,s.column,o,t.getLineMaxColumn(o)),1),u=t.getEOL()===`\r
`?new Os(l):null;i.reset(n.column-1);const c=i.next(l);return c?Wt(this._getMultilineMatchRange(t,a,l,u,c.index,c[0]),c,r):n.lineNumber!==1||n.column!==1?this._doFindNextMatchMultiline(t,new Position(1,1),i,r):null}static _doFindNextMatchLineByLine(t,n,i,r){const s=t.getLineCount(),a=n.lineNumber,o=t.getLineContent(a),l=this._findFirstMatchInLine(i,o,a,n.column,r);if(l)return l;for(let u=1;u<=s;u++){const c=(a+u-1)%s,h=t.getLineContent(c+1),f=this._findFirstMatchInLine(i,h,c+1,1,r);if(f)return f}return null}static _findFirstMatchInLine(t,n,i,r,s){t.reset(r-1);const a=t.next(n);return a?Wt(new Range(i,a.index+1,i,a.index+1+a[0].length),a,s):null}static findPreviousMatch(t,n,i,r){const s=n.parseSearchRequest();if(!s)return null;const a=new Bt(s.wordSeparators,s.regex);return s.regex.multiline?this._doFindPreviousMatchMultiline(t,i,a,r):this._doFindPreviousMatchLineByLine(t,i,a,r)}static _doFindPreviousMatchMultiline(t,n,i,r){const s=this._doFindMatchesMultiline(t,new Range(1,1,n.lineNumber,n.column),i,r,10*Ru);if(s.length>0)return s[s.length-1];const a=t.getLineCount();return n.lineNumber!==a||n.column!==t.getLineMaxColumn(a)?this._doFindPreviousMatchMultiline(t,new Position(a,t.getLineMaxColumn(a)),i,r):null}static _doFindPreviousMatchLineByLine(t,n,i,r){const s=t.getLineCount(),a=n.lineNumber,o=t.getLineContent(a).substring(0,n.column-1),l=this._findLastMatchInLine(i,o,a,r);if(l)return l;for(let u=1;u<=s;u++){const c=(s+a-u-1)%s,h=t.getLineContent(c+1),f=this._findLastMatchInLine(i,h,c+1,r);if(f)return f}return null}static _findLastMatchInLine(t,n,i,r){let s=null,a;for(t.reset(0);a=t.next(n);)s=Wt(new Range(i,a.index+1,i,a.index+1+a[0].length),a,r);return s}}function Nu(e,t,n,i,r){if(i===0)return!0;const s=t.charCodeAt(i-1);if(e.get(s)!==0||s===13||s===10)return!0;if(r>0){const a=t.charCodeAt(i);if(e.get(a)!==0)return!0}return!1}function Iu(e,t,n,i,r){if(i+r===n)return!0;const s=t.charCodeAt(i+r);if(e.get(s)!==0||s===13||s===10)return!0;if(r>0){const a=t.charCodeAt(i+r-1);if(e.get(a)!==0)return!0}return!1}function Vs(e,t,n,i,r){return Nu(e,t,n,i,r)&&Iu(e,t,n,i,r)}class Bt{constructor(t,n){this._wordSeparators=t,this._searchRegex=n,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(t){this._searchRegex.lastIndex=t,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(t){const n=t.length;let i;do{if(this._prevMatchStartIndex+this._prevMatchLength===n||(i=this._searchRegex.exec(t),!i))return null;const r=i.index,s=i[0].length;if(r===this._prevMatchStartIndex&&s===this._prevMatchLength){if(s===0){hr(t,n,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=r,this._prevMatchLength=s,!this._wordSeparators||Vs(this._wordSeparators,t,n,r,s))return i}while(i);return null}}function uf(e,t){if(!e)throw new Error(t?`Assertion failed (${t})`:"Assertion Failed")}function zu(e,t="Unreachable"){throw new Error(t)}function cf(e){e||onUnexpectedError(new BugIndicatingError("Soft Assertion Failed"))}function xn(e){if(!e()){debugger;e(),Gi(new Ue("Assertion Failed"))}}function js(e,t){let n=0;for(;n<e.length-1;){const i=e[n],r=e[n+1];if(!t(i,r))return!1;n++}return!0}class Fu{static computeUnicodeHighlights(t,n,i){const r=i?i.startLineNumber:1,s=i?i.endLineNumber:t.getLineCount(),a=new Gs(n),o=a.getCandidateCodePoints();let l;o==="allNonBasicAscii"?l=new RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):l=new RegExp(`${Uu(Array.from(o))}`,"g");const u=new Bt(null,l),c=[];let h=!1,f,p=0,g=0,m=0;e:for(let w=r,T=s;w<=T;w++){const _=t.getLineContent(w),y=_.length;u.reset(0);do if(f=u.next(_),f){let C=f.index,R=f.index+f[0].length;if(C>0){const x=_.charCodeAt(C-1);Mt(x)&&C--}if(R+1<y){const x=_.charCodeAt(R-1);Mt(x)&&R++}const B=_.substring(C,R);let v=hi(C+1,Ir,_,0);v&&v.endColumn<=C+1&&(v=null);const b=a.shouldHighlightNonBasicASCII(B,v?v.word:null);if(b!==0){if(b===3?p++:b===2?g++:b===1?m++:zu(b),c.length>=1e3){h=!0;break e}c.push(new G(w,C+1,w,R+1))}}while(f)}return{ranges:c,hasMore:h,ambiguousCharacterCount:p,invisibleCharacterCount:g,nonBasicAsciiCh
`||e===" "}class Tn{constructor(t,n,i){this.changes=t,this.moves=n,this.hitTimeout=i}}class Hu{constructor(t,n){this.lineRangeMapping=t,this.changes=n}}class ${static addRange(t,n){let i=0;for(;i<n.length&&n[i].endExclusive<t.start;)i++;let r=i;for(;r<n.length&&n[r].start<=t.endExclusive;)r++;if(i===r)n.splice(i,0,t);else{const s=Math.min(t.start,n[i].start),a=Math.max(t.endExclusive,n[r-1].endExclusive);n.splice(i,r-i,new $(s,a))}}static tryCreate(t,n){if(!(t>n))return new $(t,n)}static ofLength(t){return new $(0,t)}static ofStartAndLength(t,n){return new $(t,t+n)}constructor(t,n){if(this.start=t,this.endExclusive=n,t>n)throw new Ue(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(t){return new $(this.start+t,this.endExclusive+t)}deltaStart(t){return new $(this.start+t,this.endExclusive)}deltaEnd(t){return new $(this.start,this.endExclusive+t)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}contains(t){return this.start<=t&&t<this.endExclusive}join(t){return new $(Math.min(this.start,t.start),Math.max(this.endExclusive,t.endExclusive))}intersect(t){const n=Math.max(this.start,t.start),i=Math.min(this.endExclusive,t.endExclusive);if(n<=i)return new $(n,i)}intersects(t){const n=Math.max(this.start,t.start),i=Math.min(this.endExclusive,t.endExclusive);return n<i}isBefore(t){return this.endExclusive<=t.start}isAfter(t){return this.start>=t.endExclusive}slice(t){return t.slice(this.start,this.endExclusive)}substring(t){return t.substring(this.start,this.endExclusive)}clip(t){if(this.isEmpty)throw new Ue(`Invalid clipping range: ${this.toString()}`);return Math.max(this.start,Math.min(this.endExclusive-1,t))}clipCyclic(t){if(this.isEmpty)throw new Ue(`Invalid clipping range: ${this.toString()}`);return t<this.start?this.endExclusive-(this.start-t)%this.length:t>=this.endExclusive?this.start+(t-this.start)%this.length:t}forEach(t){for(let n=this.start;n<this.endExclusive;n++)t(n)}}class Js{constructor(){this._sortedRanges=[]}addRange(t){let n=0;for(;n<this._sortedRanges.length&&this._sortedRanges[n].endExclusive<t.start;)n++;let i=n;for(;i<this._sortedRanges.length&&this._sortedRanges[i].start<=t.endExclusive;)i++;if(n===i)this._sortedRanges.splice(n,0,t);else{const r=Math.min(t.start,this._sortedRanges[n].start),s=Math.max(t.endExclusive,this._sortedRanges[i-1].endExclusive);this._sortedRanges.splice(n,i-n,new $(r,s))}}toString(){return this._sortedRanges.map(t=>t.toString()).join(", ")}intersectsStrict(t){let n=0;for(;n<this._sortedRanges.length&&this._sortedRanges[n].endExclusive<=t.start;)n++;return n<this._sortedRanges.length&&this._sortedRanges[n].start<t.endExclusive}intersectWithRange(t){const n=new Js;for(const i of this._sortedRanges){const r=i.intersect(t);r&&n.addRange(r)}return n}intersectWithRangeLength(t){return this.intersectWithRange(t).length}get length(){return this._sortedRanges.reduce((t,n)=>t+n.length,0)}}function hf(e,t,n){const i=Wu(e,t);if(i!==-1)return e[i]}function Wu(e,t,n=e.length-1){for(let i=n;i>=0;i--){const r=e[i];if(t(r))return i}return-1}function bt(e,t){const n=Pt(e,t);return n===-1?void 0:e[n]}function Pt(e,t,n=0,i=e.length){let r=n,s=i;for(;r<s;){const a=Math.floor((r+s)/2);t(e[a])?r=a+1:s=a}return r-1}function Bu(e,t){const n=ki(e,t);return n===e.length?void 0:e[n]}function ki(e,t,n=0,i=e.length){let r=n,s=i;for(;r<s;){const a=Math.floor((r+s)/2);t(e[a])?s=a:r=a+1}return r}class qt{constructor(t){this._array=t,this._findLastMonotonousLastIdx=0}findLastMonotonous(t){if(qt.assertInvariants){if(this._prevFindLastPredicate){for(const i of this._array)if(this._prevFindLastPredicate(i)&&!t(i))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=t}const n=Pt(this._array,t,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=n+1,n===-1?void 0:this._array[n]}}qt.assertInvariants=!1;function Pu(e,t){if(e.length===0)return;let n=e[0];for(let i=1;i<e.length;i++){const r=e[i];t(r,n)>0&&(n=r)}re
`);this.histogram[o]=(this.histogram[o]||0)+1}this.totalCount=r}computeSimilarity(t){var n,i;let r=0;const s=Math.max(this.histogram.length,t.histogram.length);for(let a=0;a<s;a++)r+=Math.abs(((n=this.histogram[a])!==null&&n!==void 0?n:0)-((i=t.histogram[a])!==null&&i!==void 0?i:0));return 1-r/(this.totalCount+t.totalCount)}}wt.chrKeys=new Map;class Ju{compute(t,n,i=Vt.instance,r){if(t.length===0||n.length===0)return Pe.trivial(t,n);const s=new Li(t.length,n.length),a=new Li(t.length,n.length),o=new Li(t.length,n.length);for(let g=0;g<t.length;g++)for(let m=0;m<n.length;m++){if(!i.isValid())return Pe.trivialTimedOut(t,n);const w=g===0?0:s.get(g-1,m),T=m===0?0:s.get(g,m-1);let _;t.getElement(g)===n.getElement(m)?(g===0||m===0?_=0:_=s.get(g-1,m-1),g>0&&m>0&&a.get(g-1,m-1)===3&&(_+=o.get(g-1,m-1)),_+=r?r(g,m):1):_=-1;const y=Math.max(w,T,_);if(y===_){const C=g>0&&m>0?o.get(g-1,m-1):0;o.set(g,m,C+1),a.set(g,m,3)}else y===w?(o.set(g,m,0),a.set(g,m,1)):y===T&&(o.set(g,m,0),a.set(g,m,2));s.set(g,m,y)}const l=[];let u=t.length,c=n.length;function h(g,m){(g+1!==u||m+1!==c)&&l.push(new re(new $(g+1,u),new $(m+1,c))),u=g,c=m}let f=t.length-1,p=n.length-1;for(;f>=0&&p>=0;)a.get(f,p)===3?(h(f,p),f--,p--):a.get(f,p)===1?f--:p--;return h(-1,-1),l.reverse(),new Pe(l,!1)}}class Zs{compute(t,n,i=Vt.instance){if(t.length===0||n.length===0)return Pe.trivial(t,n);const r=t,s=n;function a(m,w){for(;m<r.length&&w<s.length&&r.getElement(m)===s.getElement(w);)m++,w++;return m}let o=0;const l=new Qu;l.set(0,a(0,0));const u=new Xu;u.set(0,l.get(0)===0?null:new Ks(null,0,0,l.get(0)));let c=0;e:for(;;){if(o++,!i.isValid())return Pe.trivialTimedOut(r,s);const m=-Math.min(o,s.length+o%2),w=Math.min(o,r.length+o%2);for(c=m;c<=w;c+=2){let T=0;const _=c===w?-1:l.get(c+1),y=c===m?-1:l.get(c-1)+1;T++;const C=Math.min(Math.max(_,y),r.length),R=C-c;if(T++,C>r.length||R>s.length)continue;const B=a(C,R);l.set(c,B);const v=C===_?u.get(c+1):u.get(c-1);if(u.set(c,B!==C?new Ks(v,C,R,B-C):v),l.get(c)===r.length&&l.get(c)-c===s.length)break e}}let h=u.get(c);const f=[];let p=r.length,g=s.length;for(;;){const m=h?h.x+h.length:0,w=h?h.y+h.length:0;if((m!==p||w!==g)&&f.push(new re(new $(m,p),new $(w,g))),!h)break;p=h.x,g=h.y,h=h.prev}return f.reverse(),new Pe(f,!1)}}class Ks{constructor(t,n,i,r){this.prev=t,this.x=n,this.y=i,this.length=r}}class Qu{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(t){return t<0?(t=-t-1,this.negativeArr[t]):this.positiveArr[t]}set(t,n){if(t<0){if(t=-t-1,t>=this.negativeArr.length){const i=this.negativeArr;this.negativeArr=new Int32Array(i.length*2),this.negativeArr.set(i)}this.negativeArr[t]=n}else{if(t>=this.positiveArr.length){const i=this.positiveArr;this.positiveArr=new Int32Array(i.length*2),this.positiveArr.set(i)}this.positiveArr[t]=n}}}class Xu{constructor(){this.positiveArr=[],this.negativeArr=[]}get(t){return t<0?(t=-t-1,this.negativeArr[t]):this.positiveArr[t]}set(t,n){t<0?(t=-t-1,this.negativeArr[t]=n):this.positiveArr[t]=n}}class kn{constructor(t,n,i){this.lines=t,this.considerWhitespaceChanges=i,this.elements=[],this.firstCharOffsetByLine=[],this.additionalOffsetByLine=[];let r=!1;n.start>0&&n.endExclusive>=t.length&&(n=new $(n.start-1,n.endExclusive),r=!0),this.lineRange=n,this.firstCharOffsetByLine[0]=0;for(let s=this.lineRange.start;s<this.lineRange.endExclusive;s++){let a=t[s],o=0;if(r)o=a.length,a="",r=!1;else if(!i){const l=a.trimStart();o=a.length-l.length,a=l.trimEnd()}this.additionalOffsetByLine.push(o);for(let l=0;l<a.length;l++)this.elements.push(a.charCodeAt(l));s<t.length-1&&(this.elements.push(10),this.firstCharOffsetByLine[s-this.lineRange.start+1]=this.elements.length)}this.additionalOffsetByLine.push(0)}toString(){return`Slice: "${this.text}"`}get text(){return this.getText(new $(0,this.length))}getText(t){return this.elements.slice(t.start,t.endExclusive).map(n=>String.fromCharCode(n)).join("")}getElement(t){return this.elements[t]}get length(){return this.elements.length}getBoundaryScore(t){const n=ta(t>0?this.elements[t-1]:-1),i=ta(t<this.elements.length?this.ele
`).length>=15&&Ku(h,p=>p.length>=2)>=2}),a=ic(e,a),a}function Ku(e,t){let n=0;for(const i of e)t(i)&&n++;return n}function ec(e,t,n,i){const r=[],s=e.filter(l=>l.modified.isEmpty&&l.original.length>=3).map(l=>new wt(l.original,t,l)),a=new Set(e.filter(l=>l.original.isEmpty&&l.modified.length>=3).map(l=>new wt(l.modified,n,l))),o=new Set;for(const l of s){let u=-1,c;for(const h of a){const f=l.computeSimilarity(h);f>u&&(u=f,c=h)}if(u>.9&&c&&(a.delete(c),r.push(new Ee(l.range,c.range)),o.add(l.source),o.add(c.source)),!i.isValid())return{moves:r,excludedChanges:o}}return{moves:r,excludedChanges:o}}function tc(e,t,n,i,r,s){const a=[],o=new Eu;for(const f of e)for(let p=f.original.startLineNumber;p<f.original.endLineNumberExclusive-2;p++){const g=`${t[p-1]}:${t[p+1-1]}:${t[p+2-1]}`;o.add(g,{range:new J(p,p+3)})}const l=[];e.sort(bn(f=>f.modified.startLineNumber,It));for(const f of e){let p=[];for(let g=f.modified.startLineNumber;g<f.modified.endLineNumberExclusive-2;g++){const m=`${n[g-1]}:${n[g+1-1]}:${n[g+2-1]}`,w=new J(g,g+3),T=[];o.forEach(m,({range:_})=>{for(const C of p)if(C.originalLineRange.endLineNumberExclusive+1===_.endLineNumberExclusive&&C.modifiedLineRange.endLineNumberExclusive+1===w.endLineNumberExclusive){C.originalLineRange=new J(C.originalLineRange.startLineNumber,_.endLineNumberExclusive),C.modifiedLineRange=new J(C.modifiedLineRange.startLineNumber,w.endLineNumberExclusive),T.push(C);return}const y={modifiedLineRange:w,originalLineRange:_};l.push(y),T.push(y)}),p=T}if(!s.isValid())return[]}l.sort(Yl(bn(f=>f.modifiedLineRange.length,It)));const u=new Ie,c=new Ie;for(const f of l){const p=f.modifiedLineRange.startLineNumber-f.originalLineRange.startLineNumber,g=u.subtractFrom(f.modifiedLineRange),m=c.subtractFrom(f.originalLineRange).getWithDelta(p),w=g.getIntersection(m);for(const T of w.ranges){if(T.length<3)continue;const _=T,y=T.delta(-p);a.push(new Ee(y,_)),u.addRange(_),c.addRange(y)}}a.sort(bn(f=>f.original.startLineNumber,It));const h=new qt(e);for(let f=0;f<a.length;f++){const p=a[f],g=h.findLastMonotonous(B=>B.original.startLineNumber<=p.original.startLineNumber),m=bt(e,B=>B.modified.startLineNumber<=p.modified.startLineNumber),w=Math.max(p.original.startLineNumber-g.original.startLineNumber,p.modified.startLineNumber-m.modified.startLineNumber),T=h.findLastMonotonous(B=>B.original.startLineNumber<p.original.endLineNumberExclusive),_=bt(e,B=>B.modified.startLineNumber<p.modified.endLineNumberExclusive),y=Math.max(T.original.endLineNumberExclusive-p.original.endLineNumberExclusive,_.modified.endLineNumberExclusive-p.modified.endLineNumberExclusive);let C;for(C=0;C<w;C++){const B=p.original.startLineNumber-C-1,v=p.modified.startLineNumber-C-1;if(B>i.length||v>r.length||u.contains(v)||c.contains(B)||!na(i[B-1],r[v-1],s))break}C>0&&(c.addRange(new J(p.original.startLineNumber-C,p.original.startLineNumber)),u.addRange(new J(p.modified.startLineNumber-C,p.modified.startLineNumber)));let R;for(R=0;R<y;R++){const B=p.original.endLineNumberExclusive+R,v=p.modified.endLineNumberExclusive+R;if(B>i.length||v>r.length||u.contains(v)||c.contains(B)||!na(i[B-1],r[v-1],s))break}R>0&&(c.addRange(new J(p.original.endLineNumberExclusive,p.original.endLineNumberExclusive+R)),u.addRange(new J(p.modified.endLineNumberExclusive,p.modified.endLineNumberExclusive+R))),(C>0||R>0)&&(a[f]=new Ee(new J(p.original.startLineNumber-C,p.original.endLineNumberExclusive+R),new J(p.modified.startLineNumber-C,p.modified.endLineNumberExclusive+R)))}return a}function na(e,t,n){if(e.trim()===t.trim())return!0;if(e.length>300&&t.length>300)return!1;const r=new Zs().compute(new kn([e],new $(0,1),!1),new kn([t],new $(0,1),!1),n);let s=0;const a=re.invert(r.diffs,e.length);for(const c of a)c.seq1Range.forEach(h=>{Ci(e.charCodeAt(h))||s++});function o(c){let h=0;for(let f=0;f<e.length;f++)Ci(c.charCodeAt(f))||h++;return h}const l=o(e.length>t.length?e:t);return s/l>.6&&l>10}function nc(e){if(e.length===0)return e;e.sort(bn(n=>n.original.startLineNumber,It));const t=[e[0]];for(let n=1;n<e.length;n++){const i=t[t.length-1],r=e[n],s=r.origina
`)}isStronglyEqual(t,n){return this.lines[t]===this.lines[n]}}function oa(e){let t=0;for(;t<e.length&&(e.charCodeAt(t)===32||e.charCodeAt(t)===9);)t++;return t}class cc{constructor(){this.dynamicProgrammingDiffing=new Ju,this.myersDiffingAlgorithm=new Zs}computeDiff(t,n,i){if(t.length<=1&&Vl(t,n,(R,B)=>R===B))return new Tn([],[],!1);if(t.length===1&&t[0].length===0||n.length===1&&n[0].length===0)return new Tn([new Be(new J(1,t.length+1),new J(1,n.length+1),[new vt(new G(1,1,t.length,t[0].length+1),new G(1,1,n.length,n[0].length+1))])],[],!1);const r=i.maxComputationTimeMs===0?Vt.instance:new $u(i.maxComputationTimeMs),s=!i.ignoreTrimWhitespace,a=new Map;function o(R){let B=a.get(R);return B===void 0&&(B=a.size,a.set(R,B)),B}const l=t.map(R=>o(R.trim())),u=n.map(R=>o(R.trim())),c=new aa(l,t),h=new aa(u,n),f=c.length+h.length<1700?this.dynamicProgrammingDiffing.compute(c,h,r,(R,B)=>t[R]===n[B]?n[B].length===0?.1:1+Math.log(1+n[B].length):.99):this.myersDiffingAlgorithm.compute(c,h);let p=f.diffs,g=f.hitTimeout;p=ia(c,h,p),p=lc(c,h,p);const m=[],w=R=>{if(s)for(let B=0;B<R;B++){const v=T+B,b=_+B;if(t[v]!==n[b]){const x=this.refineDiff(t,n,new re(new $(v,v+1),new $(b,b+1)),r,s);for(const q of x.mappings)m.push(q);x.hitTimeout&&(g=!0)}}};let T=0,_=0;for(const R of p){xn(()=>R.seq1Range.start-T===R.seq2Range.start-_);const B=R.seq1Range.start-T;w(B),T=R.seq1Range.endExclusive,_=R.seq2Range.endExclusive;const v=this.refineDiff(t,n,R,r,s);v.hitTimeout&&(g=!0);for(const b of v.mappings)m.push(b)}w(t.length-T);const y=la(m,t,n);let C=[];return i.computeMoves&&(C=this.computeMoves(y,t,n,l,u,r,s)),xn(()=>{function R(v,b){if(v.lineNumber<1||v.lineNumber>b.length)return!1;const x=b[v.lineNumber-1];return!(v.column<1||v.column>x.length+1)}function B(v,b){return!(v.startLineNumber<1||v.startLineNumber>b.length+1||v.endLineNumberExclusive<1||v.endLineNumberExclusive>b.length+1)}for(const v of y){if(!v.innerChanges)return!1;for(const b of v.innerChanges)if(!(R(b.modifiedRange.getStartPosition(),n)&&R(b.modifiedRange.getEndPosition(),n)&&R(b.originalRange.getStartPosition(),t)&&R(b.originalRange.getEndPosition(),t)))return!1;if(!B(v.modified,n)||!B(v.original,t))return!1}return!0}),new Tn(y,C,g)}computeMoves(t,n,i,r,s,a,o){return Zu(t,n,i,r,s,a).map(c=>{const h=this.refineDiff(n,i,new re(c.original.toOffsetRange(),c.modified.toOffsetRange()),a,o),f=la(h.mappings,n,i,!0);return new Hu(c,f)})}refineDiff(t,n,i,r,s){const a=new kn(t,i.seq1Range,s),o=new kn(n,i.seq2Range,s),l=a.length+o.length<500?this.dynamicProgrammingDiffing.compute(a,o,r):this.myersDiffingAlgorithm.compute(a,o,r);let u=l.diffs;return u=ia(a,o,u),u=ac(a,o,u),u=sc(a,o,u),u=uc(a,o,u),{mappings:u.map(h=>new vt(a.translateRange(h.seq1Range),o.translateRange(h.seq2Range))),hitTimeout:l.hitTimeout}}}function la(e,t,n,i=!1){const r=[];for(const s of Gl(e.map(a=>hc(a,t,n)),(a,o)=>a.original.overlapOrTouch(o.original)||a.modified.overlapOrTouch(o.modified))){const a=s[0],o=s[s.length-1];r.push(new Be(a.original.join(o.original),a.modified.join(o.modified),s.map(l=>l.innerChanges[0])))}return xn(()=>!i&&r.length>0&&(r[0].modified.startLineNumber!==r[0].original.startLineNumber||n.length-r[r.length-1].modified.endLineNumberExclusive!==t.length-r[r.length-1].original.endLineNumberExclusive)?!1:js(r,(s,a)=>a.original.startLineNumber-s.original.endLineNumberExclusive===a.modified.startLineNumber-s.modified.endLineNumberExclusive&&s.original.endLineNumberExclusive<a.original.startLineNumber&&s.modified.endLineNumberExclusive<a.modified.startLineNumber)),r}function hc(e,t,n){let i=0,r=0;e.modifiedRange.endColumn===1&&e.originalRange.endColumn===1&&e.originalRange.startLineNumber+i<=e.originalRange.endLineNumber&&e.modifiedRange.startLineNumber+i<=e.modifiedRange.endLineNumber&&(r=-1),e.modifiedRange.startColumn-1>=n[e.modifiedRange.startLineNumber-1].length&&e.originalRange.startColumn-1>=t[e.originalRange.startLineNumber-1].length&&e.originalRange.startLineNumber<=e.originalRange.endLineNumber+r&&e.modifiedRange.startLineNumber<=e.modifiedRange.endLineNumber+r&&(i=1);const s=new J(e.origin
`,s==="\r"&&r+1<n.length&&n.charAt(r+1)===`
`&&r++}i&&n.length>0&&t.push(n.length),this._lineOffsets=t}return this._lineOffsets},e.prototype.positionAt=function(t){t=Math.max(Math.min(t,this._content.length),0);var n=this.getLineOffsets(),i=0,r=n.length;if(r===0)return ue.create(0,t);for(;i<r;){var s=Math.floor((i+r)/2);n[s]>t?r=s:i=s+1}var a=i-1;return ue.create(a,t-n[a])},e.prototype.offsetAt=function(t){var n=this.getLineOffsets();if(t.line>=n.length)return this._content.length;if(t.line<0)return 0;var i=n[t.line],r=t.line+1<n.length?n[t.line+1]:this._content.length;return Math.max(Math.min(i+t.character,r),i)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),e}(),E;(function(e){var t=Object.prototype.toString;function n(p){return typeof p<"u"}e.defined=n;function i(p){return typeof p>"u"}e.undefined=i;function r(p){return p===!0||p===!1}e.boolean=r;function s(p){return t.call(p)==="[object String]"}e.string=s;function a(p){return t.call(p)==="[object Number]"}e.number=a;function o(p,g,m){return t.call(p)==="[object Number]"&&g<=p&&p<=m}e.numberRange=o;function l(p){return t.call(p)==="[object Number]"&&-2147483648<=p&&p<=2147483647}e.integer=l;function u(p){return t.call(p)==="[object Number]"&&0<=p&&p<=2147483647}e.uinteger=u;function c(p){return t.call(p)==="[object Function]"}e.func=c;function h(p){return p!==null&&typeof p=="object"}e.objectLiteral=h;function f(p,g){return Array.isArray(p)&&p.every(g)}e.typedArray=f})(E||(E={}));var $a=class Vi{constructor(t,n,i,r){this._uri=t,this._languageId=n,this._version=i,this._content=r,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(t){if(t){const n=this.offsetAt(t.start),i=this.offsetAt(t.end);return this._content.substring(n,i)}return this._content}update(t,n){for(let i of t)if(Vi.isIncremental(i)){const r=Qa(i.range),s=this.offsetAt(r.start),a=this.offsetAt(r.end);this._content=this._content.substring(0,s)+i.text+this._content.substring(a,this._content.length);const o=Math.max(r.start.line,0),l=Math.max(r.end.line,0);let u=this._lineOffsets;const c=Ja(i.text,!1,s);if(l-o===c.length)for(let f=0,p=c.length;f<p;f++)u[f+o+1]=c[f];else c.length<1e4?u.splice(o+1,l-o,...c):this._lineOffsets=u=u.slice(0,o+1).concat(c,u.slice(l+1));const h=i.text.length-(a-s);if(h!==0)for(let f=o+1+c.length,p=u.length;f<p;f++)u[f]=u[f]+h}else if(Vi.isFull(i))this._content=i.text,this._lineOffsets=void 0;else throw new Error("Unknown change event received");this._version=n}getLineOffsets(){return this._lineOffsets===void 0&&(this._lineOffsets=Ja(this._content,!0)),this._lineOffsets}positionAt(t){t=Math.max(Math.min(t,this._content.length),0);let n=this.getLineOffsets(),i=0,r=n.length;if(r===0)return{line:0,character:t};for(;i<r;){let a=Math.floor((i+r)/2);n[a]>t?r=a:i=a+1}let s=i-1;return{line:s,character:t-n[s]}}offsetAt(t){let n=this.getLineOffsets();if(t.line>=n.length)return this._content.length;if(t.line<0)return 0;let i=n[t.line],r=t.line+1<n.length?n[t.line+1]:this._content.length;return Math.max(Math.min(i+t.character,r),i)}get lineCount(){return this.getLineOffsets().length}static isIncremental(t){let n=t;return n!=null&&typeof n.text=="string"&&n.range!==void 0&&(n.rangeLength===void 0||typeof n.rangeLength=="number")}static isFull(t){let n=t;return n!=null&&typeof n.text=="string"&&n.range===void 0&&n.rangeLength===void 0}},Hi;(function(e){function t(r,s,a,o){return new $a(r,s,a,o)}e.create=t;function n(r,s,a){if(r instanceof $a)return r.update(s,a),r;throw new Error("TextDocument.update: document must be created by TextDocument.create")}e.update=n;function i(r,s){let a=r.getText(),o=Wi(s.map(kc),(c,h)=>{let f=c.range.start.line-h.range.start.line;return f===0?c.range.start.character-h.range.start.character:f}),l=0;const u=[];for(const c of o){let h=r.offsetAt(c.range.start);if(h<l)throw new Error("Overlapping edit");h>l&&u.push(a.substring(l,h)),c.newText.length&&u.push(c.newText),l=r.offsetAt(c.range.end)}return u.push(a.substr(l)),u.join("")}e.applyEdits=i}
`,"nexist;":"\u2204","nexists;":"\u2204","Nfr;":"\u{1D511}","nfr;":"\u{1D52B}","ngE;":"\u2267\u0338","nge;":"\u2271","ngeq;":"\u2271","ngeqq;":"\u2267\u0338","ngeqslant;":"\u2A7E\u0338","nges;":"\u2A7E\u0338","nGg;":"\u22D9\u0338","ngsim;":"\u2275","nGt;":"\u226B\u20D2","ngt;":"\u226F","ngtr;":"\u226F","nGtv;":"\u226B\u0338","nhArr;":"\u21CE","nharr;":"\u21AE","nhpar;":"\u2AF2","ni;":"\u220B","nis;":"\u22FC","nisd;":"\u22FA","niv;":"\u220B","NJcy;":"\u040A","njcy;":"\u045A","nlArr;":"\u21CD","nlarr;":"\u219A","nldr;":"\u2025","nlE;":"\u2266\u0338","nle;":"\u2270","nLeftarrow;":"\u21CD","nleftarrow;":"\u219A","nLeftrightarrow;":"\u21CE","nleftrightarrow;":"\u21AE","nleq;":"\u2270","nleqq;":"\u2266\u0338","nleqslant;":"\u2A7D\u0338","nles;":"\u2A7D\u0338","nless;":"\u226E","nLl;":"\u22D8\u0338","nlsim;":"\u2274","nLt;":"\u226A\u20D2","nlt;":"\u226E","nltri;":"\u22EA","nltrie;":"\u22EC","nLtv;":"\u226A\u0338","nmid;":"\u2224","NoBreak;":"\u2060","NonBreakingSpace;":"\xA0","Nopf;":"\u2115","nopf;":"\u{1D55F}","Not;":"\u2AEC","not;":"\xAC",not:"\xAC","NotCongruent;":"\u2262","NotCupCap;":"\u226D","NotDoubleVerticalBar;":"\u2226","NotElement;":"\u2209","NotEqual;":"\u2260","NotEqualTilde;":"\u2242\u0338","NotExists;":"\u2204","NotGreater;":"\u226F","NotGreaterEqual;":"\u2271","NotGreaterFullEqual;":"\u2267\u0338","NotGreaterGreater;":"\u226B\u0338","NotGreaterLess;":"\u2279","NotGreaterSlantEqual;":"\u2A7E\u0338","NotGreaterTilde;":"\u2275","NotHumpDownHump;":"\u224E\u0338","NotHumpEqual;":"\u224F\u0338","notin;":"\u2209","notindot;":"\u22F5\u0338","notinE;":"\u22F9\u0338","notinva;":"\u2209","notinvb;":"\u22F7","notinvc;":"\u22F6","NotLeftTriangle;":"\u22EA","NotLeftTriangleBar;":"\u29CF\u0338","NotLeftTriangleEqual;":"\u22EC","NotLess;":"\u226E","NotLessEqual;":"\u2270","NotLessGreater;":"\u2278","NotLessLess;":"\u226A\u0338","NotLessSlantEqual;":"\u2A7D\u0338","NotLessTilde;":"\u2274","NotNestedGreaterGreater;":"\u2AA2\u0338","NotNestedLessLess;":"\u2AA1\u0338","notni;":"\u220C","notniva;":"\u220C","notnivb;":"\u22FE","notnivc;":"\u22FD","NotPrecedes;":"\u2280","NotPrecedesEqual;":"\u2AAF\u0338","NotPrecedesSlantEqual;":"\u22E0","NotReverseElement;":"\u220C","NotRightTriangle;":"\u22EB","NotRightTriangleBar;":"\u29D0\u0338","NotRightTriangleEqual;":"\u22ED","NotSquareSubset;":"\u228F\u0338","NotSquareSubsetEqual;":"\u22E2","NotSquareSuperset;":"\u2290\u0338","NotSquareSupersetEqual;":"\u22E3","NotSubset;":"\u2282\u20D2","NotSubsetEqual;":"\u2288","NotSucceeds;":"\u2281","NotSucceedsEqual;":"\u2AB0\u0338","NotSucceedsSlantEqual;":"\u22E1","NotSucceedsTilde;":"\u227F\u0338","NotSuperset;":"\u2283\u20D2","NotSupersetEqual;":"\u2289","NotTilde;":"\u2241","NotTildeEqual;":"\u2244","NotTildeFullEqual;":"\u2247","NotTildeTilde;":"\u2249","NotVerticalBar;":"\u2224","npar;":"\u2226","nparallel;":"\u2226","nparsl;":"\u2AFD\u20E5","npart;":"\u2202\u0338","npolint;":"\u2A14","npr;":"\u2280","nprcue;":"\u22E0","npre;":"\u2AAF\u0338","nprec;":"\u2280","npreceq;":"\u2AAF\u0338","nrArr;":"\u21CF","nrarr;":"\u219B","nrarrc;":"\u2933\u0338","nrarrw;":"\u219D\u0338","nRightarrow;":"\u21CF","nrightarrow;":"\u219B","nrtri;":"\u22EB","nrtrie;":"\u22ED","nsc;":"\u2281","nsccue;":"\u22E1","nsce;":"\u2AB0\u0338","Nscr;":"\u{1D4A9}","nscr;":"\u{1D4C3}","nshortmid;":"\u2224","nshortparallel;":"\u2226","nsim;":"\u2241","nsime;":"\u2244","nsimeq;":"\u2244","nsmid;":"\u2224","nspar;":"\u2226","nsqsube;":"\u22E2","nsqsupe;":"\u22E3","nsub;":"\u2284","nsubE;":"\u2AC5\u0338","nsube;":"\u2288","nsubset;":"\u2282\u20D2","nsubseteq;":"\u2288","nsubseteqq;":"\u2AC5\u0338","nsucc;":"\u2281","nsucceq;":"\u2AB0\u0338","nsup;":"\u2285","nsupE;":"\u2AC6\u0338","nsupe;":"\u2289","nsupset;":"\u2283\u20D2","nsupseteq;":"\u2289","nsupseteqq;":"\u2AC6\u0338","ntgl;":"\u2279","Ntilde;":"\xD1",Ntilde:"\xD1","ntilde;":"\xF1",ntilde:"\xF1","ntlg;":"\u2278","ntriangleleft;":"\u22EA","ntrianglelefteq;":"\u22EC","ntriangleright;":"\u22EB","ntrianglerighteq;":"\u22ED","Nu;":"\u039D","nu;":"\u03BD","num;":"#","numero;":"\u2116","numsp;":"\u2007","nvap;":"\u224D\u20D2","nVDash;"
`),n?i.value+=e.references.map(function(s){return"[".concat(s.name,"](").concat(s.url,")")}).join(" | "):i.value+=e.references.map(function(s){return"".concat(s.name,": ").concat(s.url)}).join(`
`)),i.value!=="")return i}var io=function(e,t,n,i){function r(s){return s instanceof n?s:new n(function(a){a(s)})}return new(n||(n=Promise))(function(s,a){function o(c){try{u(i.next(c))}catch(h){a(h)}}function l(c){try{u(i.throw(c))}catch(h){a(h)}}function u(c){c.done?s(c.value):r(c.value).then(o,l)}u((i=i.apply(e,t||[])).next())})},ro=function(e,t){var n={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},i,r,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(u){return function(c){return l([u,c])}}function l(u){if(i)throw new TypeError("Generator is already executing.");for(;n;)try{if(i=1,r&&(s=u[0]&2?r.return:u[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,u[1])).done)return s;switch(r=0,s&&(u=[u[0]&2,s.value]),u[0]){case 0:case 1:s=u;break;case 4:return n.label++,{value:u[1],done:!1};case 5:n.label++,r=u[1],u=[0];continue;case 7:u=n.ops.pop(),n.trys.pop();continue;default:if(s=n.trys,!(s=s.length>0&&s[s.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!s||u[1]>s[0]&&u[1]<s[3])){n.label=u[1];break}if(u[0]===6&&n.label<s[1]){n.label=s[1],s=u;break}if(s&&n.label<s[2]){n.label=s[2],n.ops.push(u);break}s[2]&&n.ops.pop(),n.trys.pop();continue}u=t.call(e,n)}catch(c){u=[6,c],r=0}finally{i=s=0}if(u[0]&5)throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}},jc=function(){function e(t){this.readDirectory=t,this.atributeCompletions=[]}return e.prototype.onHtmlAttributeValue=function(t){Qc(t.tag,t.attribute)&&this.atributeCompletions.push(t)},e.prototype.computeCompletions=function(t,n){return io(this,void 0,void 0,function(){var i,r,s,a,o,l,u,c,h,f;return ro(this,function(p){switch(p.label){case 0:i={items:[],isIncomplete:!1},r=0,s=this.atributeCompletions,p.label=1;case 1:return r<s.length?(a=s[r],o=$c(t.getText(a.range)),Jc(o)?o==="."||o===".."?(i.isIncomplete=!0,[3,4]):[3,2]:[3,4]):[3,5];case 2:return l=Xc(a.value,o,a.range),[4,this.providePathSuggestions(a.value,l,t,n)];case 3:for(u=p.sent(),c=0,h=u;c<h.length;c++)f=h[c],i.items.push(f);p.label=4;case 4:return r++,[3,1];case 5:return[2,i]}})})},e.prototype.providePathSuggestions=function(t,n,i,r){return io(this,void 0,void 0,function(){var s,a,o,l,u,c,h,f,p,g;return ro(this,function(m){switch(m.label){case 0:if(s=t.substring(0,t.lastIndexOf("/")+1),a=r.resolveReference(s||".",i.uri),!a)return[3,4];m.label=1;case 1:return m.trys.push([1,3,,4]),o=[],[4,this.readDirectory(a)];case 2:for(l=m.sent(),u=0,c=l;u<c.length;u++)h=c[u],f=h[0],p=h[1],f.charCodeAt(0)!==Gc&&o.push(Yc(f,p===Bi.Directory,n));return[2,o];case 3:return g=m.sent(),[3,4];case 4:return[2,[]]}})})},e}(),Gc=46;function $c(e){return tt(e,"'")||tt(e,'"')?e.slice(1,-1):e}function Jc(e){return!(tt(e,"http")||tt(e,"https")||tt(e,"//"))}function Qc(e,t){if(t==="src"||t==="href")return!0;var n=Kc[e];return n?typeof n=="string"?n===t:n.indexOf(t)!==-1:!1}function Xc(e,t,n){var i,r=e.lastIndexOf("/");if(r===-1)i=Zc(n,1,-1);else{var s=t.slice(r+1),a=Kt(n.end,-1-s.length),o=s.indexOf(" "),l=void 0;o!==-1?l=Kt(a,o):l=Kt(n.end,-1),i=K.create(a,l)}return i}function Yc(e,t,n){return t?(e=e+"/",{label:e,kind:_e.Folder,textEdit:ae.replace(n,e),command:{title:"Suggest",command:"editor.action.triggerSuggest"}}):{label:e,kind:_e.File,textEdit:ae.replace(n,e)}}function Kt(e,t){return ue.create(e.line,e.character+t)}function Zc(e,t,n){var i=Kt(e.start,t),r=Kt(e.end,n);return K.create(i,r)}var Kc={a:"href",area:"href",body:"background",del:"cite",form:"action",frame:["src","longdesc"],img:["src","longdesc"],ins:"cite",link:"href",object:"data",q:"cite",script:"src",audio:"src",button:"formaction",command:"icon",embed:"src",html:"manifest",input:["src","formaction"],source:"src",track:"src",video:["src","poster"]},eh=function(e,t,n,i){function r(s){return s instanceof n?s:new n(function(a){a(s)})}return new(n||(n=Promise))(function(s,a){function o(c){try{u(i.next(c))}catch(h){a(h)}}function l(c){try{u(i.throw(c))}catch(h){a(h)}}function u(c){c.done?s(c.value):r(c.value).then(o,l)}u((i=i.apply(e,t||[])).next())
\r`.indexOf(P)>=0)return u.substring(z,I);if(!Hn(P))return null;z--}return u.substring(0,I)}function _(I,z,P){P===void 0&&(P=c);var X=m(I,P),Q=so(u,P,V.WithinEndTag,H.EndTagClose)?"":">",Y=h;for(z&&(Y=Y.parent);Y;){var ee=Y.tag;if(ee&&(!Y.closed||Y.endTagStart&&Y.endTagStart>c)){var ge={label:"/"+ee,kind:_e.Property,filterText:"/"+ee,textEdit:ae.replace(X,"/"+ee+Q),insertTextFormat:Re.PlainText},Fe=T(Y.start),nt=T(I-1);if(Fe!==null&&nt!==null&&Fe!==nt){var ke=Fe+"</"+ee+Q;ge.textEdit=ae.replace(m(I-1-nt.length),ke),ge.filterText=nt+"</"+ee}return s.items.push(ge),s}Y=Y.parent}return z||o.forEach(function(at){at.provideTags().forEach(function(De){s.items.push({label:"/"+De.name,kind:_e.Property,documentation:st(De,void 0,l),filterText:"/"+De.name+Q,textEdit:ae.replace(X,"/"+De.name+Q),insertTextFormat:Re.PlainText})})}),s}function y(I,z){if(r&&r.hideAutoCompleteProposals)return s;if(!Fn(z)){var P=t.positionAt(I);s.items.push({label:"</"+z+">",kind:_e.Property,filterText:"</"+z+">",textEdit:ae.insert(P,"$0</"+z+">"),insertTextFormat:Re.Snippet})}return s}function C(I,z){return w(I,z),_(I,!0,z),s}function R(){var I=Object.create(null);return h.attributeNames.forEach(function(z){I[z]=!0}),I}function B(I,z){var P;z===void 0&&(z=c);for(var X=c;X<z&&u[X]!=="<";)X++;var Q=u.substring(I,z),Y=m(I,X),ee="";if(!so(u,z,V.AfterAttributeName,H.DelimiterAssign)){var ge=(P=r?.attributeDefaultValue)!==null&&P!==void 0?P:"doublequotes";ge==="empty"?ee="=$1":ge==="singlequotes"?ee="='$1'":ee='="$1"'}var Fe=R();return Fe[Q]=!1,o.forEach(function(nt){nt.provideAttributes(p).forEach(function(ke){if(!Fe[ke.name]){Fe[ke.name]=!0;var at=ke.name,De;ke.valueSet!=="v"&&ee.length&&(at=at+ee,(ke.valueSet||ke.name==="style")&&(De={title:"Suggest",command:"editor.action.triggerSuggest"})),s.items.push({label:ke.name,kind:ke.valueSet==="handler"?_e.Function:_e.Value,documentation:st(ke,void 0,l),textEdit:ae.replace(Y,at),insertTextFormat:Re.Snippet,command:De})}})}),v(Y,Fe),s}function v(I,z){var P="data-",X={};X[P]="".concat(P,'$1="$2"');function Q(Y){Y.attributeNames.forEach(function(ee){tt(ee,P)&&!X[ee]&&!z[ee]&&(X[ee]=ee+'="$1"')}),Y.children.forEach(function(ee){return Q(ee)})}i&&i.roots.forEach(function(Y){return Q(Y)}),Object.keys(X).forEach(function(Y){return s.items.push({label:Y,kind:_e.Value,textEdit:ae.replace(I,X[Y]),insertTextFormat:Re.Snippet})})}function b(I,z){z===void 0&&(z=c);var P,X,Q;if(c>I&&c<=z&&rh(u[I])){var Y=I+1,ee=z;z>I&&u[z-1]===u[I]&&ee--;var ge=sh(u,c,Y),Fe=ah(u,c,ee);P=m(ge,Fe),Q=c>=Y&&c<=ee?u.substring(Y,c):"",X=!1}else P=m(I,z),Q=u.substring(I,c),X=!0;if(a.length>0)for(var nt=p.toLowerCase(),ke=g.toLowerCase(),at=m(I,z),De=0,vo=a;De<vo.length;De++){var _o=vo[De];_o.onHtmlAttributeValue&&_o.onHtmlAttributeValue({document:t,position:n,tag:nt,attribute:ke,value:Q,range:at})}return o.forEach(function(Bh){Bh.provideValues(p,g).forEach(function(Wn){var wo=X?'"'+Wn.name+'"':Wn.name;s.items.push({label:Wn.name,filterText:wo,kind:_e.Unit,documentation:st(Wn,void 0,l),textEdit:ae.replace(P,wo),insertTextFormat:Re.PlainText})})}),W(),s}function x(I){return c===f.getTokenEnd()&&(L=f.scan(),L===I&&f.getTokenOffset()===c)?f.getTokenEnd():c}function q(){for(var I=0,z=a;I<z.length;I++){var P=z[I];P.onHtmlContent&&P.onHtmlContent({document:t,position:n})}return W()}function W(){for(var I=c-1,z=n.character;I>=0&&Zt(u,I);)I--,z--;if(I>=0&&u[I]==="&"){var P=K.create(ue.create(n.line,z-1),n);for(var X in Yt)if(Uc(X,";")){var Q="&"+X;s.items.push({label:Q,kind:_e.Keyword,documentation:nh("entity.propose","Character entity representing '".concat(Yt[X],"'")),textEdit:ae.replace(P,Q),insertTextFormat:Re.PlainText})}}return s}function A(I,z){var P=m(I,z);s.items.push({label:"!DOCTYPE",kind:_e.Property,documentation:"A preamble for an HTML document.",textEdit:ae.replace(P,"!DOCTYPE html>"),insertTextFormat:Re.PlainText})}for(var L=f.scan();L!==H.EOS&&f.getTokenOffset()<=c;){switch(L){case H.StartTagOpen:if(f.getTokenEnd()===c){var N=x(H.StartTag);return n.line===0&&A(c,N),C(c,N)}break;case H.StartTag:if(f.getTokenOffset()<=c&&c<=f.getTokenEnd())ret
`);u!==-1?this.__character_count=l.length-u:this.__character_count+=l.length},s.prototype.pop=function(){var l=null;return this.is_empty()||(l=this.__items.pop(),this.__character_count-=l.length),l},s.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},s.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},s.prototype.trim=function(){for(;this.last()===" ";)this.__items.pop(),this.__character_count-=1},s.prototype.toString=function(){var l="";return this.is_empty()?this.__parent.indent_empty_lines&&(l=this.__parent.get_indent_string(this.__indent_count)):(l=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),l+=this.__items.join("")),l};function a(l,u){this.__cache=[""],this.__indent_size=l.indent_size,this.__indent_string=l.indent_char,l.indent_with_tabs||(this.__indent_string=new Array(l.indent_size+1).join(l.indent_char)),u=u||"",l.indent_level>0&&(u=new Array(l.indent_level+1).join(this.__indent_string)),this.__base_string=u,this.__base_string_length=u.length}a.prototype.get_indent_size=function(l,u){var c=this.__base_string_length;return u=u||0,l<0&&(c=0),c+=l*this.__indent_size,c+=u,c},a.prototype.get_indent_string=function(l,u){var c=this.__base_string;return u=u||0,l<0&&(l=0,c=""),u+=l*this.__indent_size,this.__ensure_cache(u),c+=this.__cache[u],c},a.prototype.__ensure_cache=function(l){for(;l>=this.__cache.length;)this.__add_column()},a.prototype.__add_column=function(){var l=this.__cache.length,u=0,c="";this.__indent_size&&l>=this.__indent_size&&(u=Math.floor(l/this.__indent_size),l-=u*this.__indent_size,c=new Array(u+1).join(this.__indent_string)),l&&(c+=new Array(l+1).join(" ")),this.__cache.push(c)};function o(l,u){this.__indent_cache=new a(l,u),this.raw=!1,this._end_with_newline=l.end_with_newline,this.indent_size=l.indent_size,this.wrap_line_length=l.wrap_line_length,this.indent_empty_lines=l.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new s(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}o.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},o.prototype.get_line_number=function(){return this.__lines.length},o.prototype.get_indent_string=function(l,u){return this.__indent_cache.get_indent_string(l,u)},o.prototype.get_indent_size=function(l,u){return this.__indent_cache.get_indent_size(l,u)},o.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},o.prototype.add_new_line=function(l){return this.is_empty()||!l&&this.just_added_newline()?!1:(this.raw||this.__add_outputline(),!0)},o.prototype.get_code=function(l){this.trim(!0);var u=this.current_line.pop();u&&(u[u.length-1]===`
`&&(u=u.replace(/\n+$/g,"")),this.current_line.push(u)),this._end_with_newline&&this.__add_outputline();var c=this.__lines.join(`
`);return l!==`
`&&(c=c.replace(/[\n]/g,l)),c},o.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},o.prototype.set_indent=function(l,u){return l=l||0,u=u||0,this.next_line.set_indent(l,u),this.__lines.length>1?(this.current_line.set_indent(l,u),!0):(this.current_line.set_indent(),!1)},o.prototype.add_raw_token=function(l){for(var u=0;u<l.newlines;u++)this.__add_outputline();this.current_line.set_indent(-1),this.current_line.push(l.whitespace_before),this.current_line.push(l.text),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1},o.prototype.add_token=function(l){this.__add_space_before_token(),this.current_line.push(l),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=this.current_line._allow_wrap()},o.prototype.__add_space_before_token=function(){this.space_before_token&&!this.just_added_newline()&&(this.non_breaking_space||this.set_wrap_point(),this.current_line.push(" "))},o.prototype.remove_indent=function(l){for(var u=this.__lines.length;l<u;)this.__lines[l]._remove_indent(),l++;this.current_line._remove_wrap_indent()},o.prototype.trim=function(l){for(l=l===void 0?!1:l,this.current_line.trim();l&&this.__lines.length>1&&this.current_line.is_empty();)this.__lines.pop(),this.current_line=this.__lines[this.__lines.length-1],this.current_line.trim();this.previous_line=this.__lines.length>1?this.__lines[this.__lines.length-2]:null},o.prototype.just_added_newline=function(){return this.current_line.is_empty()},o.prototype.just_added_blankline=function(){return this.is_empty()||this.current_line.is_empty()&&this.previous_line.is_empty()},o.prototype.ensure_empty_line_above=function(l,u){for(var c=this.__lines.length-2;c>=0;){var h=this.__lines[c];if(h.is_empty())break;if(h.item(0).indexOf(l)!==0&&h.item(-1)!==u){this.__lines.splice(c+1,0,new s(this)),this.previous_line=this.__lines[this.__lines.length-2];break}c--}},r.exports.Output=o},,,,function(r){function s(l,u){this.raw_options=a(l,u),this.disabled=this._get_boolean("disabled"),this.eol=this._get_characters("eol","auto"),this.end_with_newline=this._get_boolean("end_with_newline"),this.indent_size=this._get_number("indent_size",4),this.indent_char=this._get_characters("indent_char"," "),this.indent_level=this._get_number("indent_level"),this.preserve_newlines=this._get_boolean("preserve_newlines",!0),this.max_preserve_newlines=this._get_number("max_preserve_newlines",32786),this.preserve_newlines||(this.max_preserve_newlines=0),this.indent_with_tabs=this._get_boolean("indent_with_tabs",this.indent_char===" "),this.indent_with_tabs&&(this.indent_char=" ",this.indent_size===1&&(this.indent_size=4)),this.wrap_line_length=this._get_number("wrap_line_length",this._get_number("max_char")),this.indent_empty_lines=this._get_boolean("indent_empty_lines"),this.templating=this._get_selection_list("templating",["auto","none","django","erb","handlebars","php","smarty"],["auto"])}s.prototype._get_array=function(l,u){var c=this.raw_options[l],h=u||[];return typeof c=="object"?c!==null&&typeof c.concat=="function"&&(h=c.concat()):typeof c=="string"&&(h=c.split(/[^a-zA-Z0-9_\/\-]+/)),h},s.prototype._get_boolean=function(l,u){var c=this.raw_options[l],h=c===void 0?!!u:!!c;return h},s.prototype._get_characters=function(l,u){var c=this.raw_options[l],h=u||"";return typeof c=="string"&&(h=c.replace(/\\r/,"\r").replace(/\\n/,`
`).replace(/\\t/," ")),h},s.prototype._get_number=function(l,u){var c=this.raw_options[l];u=parseInt(u,10),isNaN(u)&&(u=0);var h=parseInt(c,10);return isNaN(h)&&(h=u),h},s.prototype._get_selection=function(l,u,c){var h=this._get_selection_list(l,u,c);if(h.length!==1)throw new Error("Invalid Option Value: The option '"+l+`' can only be one of the following values:
`+u+`
You passed in: '`+this.raw_options[l]+"'");return h[0]},s.prototype._get_selection_list=function(l,u,c){if(!u||u.length===0)throw new Error("Selection list cannot be empty.");if(c=c||[u[0]],!this._is_valid_selection(c,u))throw new Error("Invalid Default Value!");var h=this._get_array(l,c);if(!this._is_valid_selection(h,u))throw new Error("Invalid Option Value: The option '"+l+`' can contain only the following values:
`+u+`
You passed in: '`+this.raw_options[l]+"'");return h},s.prototype._is_valid_selection=function(l,u){return l.length&&u.length&&!l.some(function(c){return u.indexOf(c)===-1})};function a(l,u){var c={};l=o(l);var h;for(h in l)h!==u&&(c[h]=l[h]);if(u&&l[u])for(h in l[u])c[h]=l[u][h];return c}function o(l){var u={},c;for(c in l){var h=c.replace(/-/g,"_");u[h]=l[c]}return u}r.exports.Options=s,r.exports.normalizeOpts=o,r.exports.mergeOpts=a},,function(r){var s=RegExp.prototype.hasOwnProperty("sticky");function a(o){this.__input=o||"",this.__input_length=this.__input.length,this.__position=0}a.prototype.restart=function(){this.__position=0},a.prototype.back=function(){this.__position>0&&(this.__position-=1)},a.prototype.hasNext=function(){return this.__position<this.__input_length},a.prototype.next=function(){var o=null;return this.hasNext()&&(o=this.__input.charAt(this.__position),this.__position+=1),o},a.prototype.peek=function(o){var l=null;return o=o||0,o+=this.__position,o>=0&&o<this.__input_length&&(l=this.__input.charAt(o)),l},a.prototype.__match=function(o,l){o.lastIndex=l;var u=o.exec(this.__input);return u&&!(s&&o.sticky)&&u.index!==l&&(u=null),u},a.prototype.test=function(o,l){return l=l||0,l+=this.__position,l>=0&&l<this.__input_length?!!this.__match(o,l):!1},a.prototype.testChar=function(o,l){var u=this.peek(l);return o.lastIndex=0,u!==null&&o.test(u)},a.prototype.match=function(o){var l=this.__match(o,this.__position);return l?this.__position+=l[0].length:l=null,l},a.prototype.read=function(o,l,u){var c="",h;return o&&(h=this.match(o),h&&(c+=h[0])),l&&(h||!o)&&(c+=this.readUntil(l,u)),c},a.prototype.readUntil=function(o,l){var u="",c=this.__position;o.lastIndex=this.__position;var h=o.exec(this.__input);return h?(c=h.index,l&&(c+=h[0].length)):c=this.__input_length,u=this.__input.substring(this.__position,c),this.__position=c,u},a.prototype.readUntilAfter=function(o){return this.readUntil(o,!0)},a.prototype.get_regexp=function(o,l){var u=null,c="g";return l&&s&&(c="y"),typeof o=="string"&&o!==""?u=new RegExp(o,c):o&&(u=new RegExp(o.source,c)),u},a.prototype.get_literal_regexp=function(o){return RegExp(o.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"))},a.prototype.peekUntilAfter=function(o){var l=this.__position,u=this.readUntilAfter(o);return this.__position=l,u},a.prototype.lookBack=function(o){var l=this.__position-1;return l>=o.length&&this.__input.substring(l-o.length,l).toLowerCase()===o},r.exports.InputScanner=a},,,,,function(r){function s(a,o){a=typeof a=="string"?a:a.source,o=typeof o=="string"?o:o.source,this.__directives_block_pattern=new RegExp(a+/ beautify( \w+[:]\w+)+ /.source+o,"g"),this.__directive_pattern=/ (\w+)[:](\w+)/g,this.__directives_end_ignore_pattern=new RegExp(a+/\sbeautify\signore:end\s/.source+o,"g")}s.prototype.get_directives=function(a){if(!a.match(this.__directives_block_pattern))return null;var o={};this.__directive_pattern.lastIndex=0;for(var l=this.__directive_pattern.exec(a);l;)o[l[1]]=l[2],l=this.__directive_pattern.exec(a);return o},s.prototype.readIgnored=function(a){return a.readUntilAfter(this.__directives_end_ignore_pattern)},r.exports.Directives=s},,function(r,s,a){var o=a(16).Beautifier,l=a(17).Options;function u(c,h){var f=new o(c,h);return f.beautify()}r.exports=u,r.exports.defaultOptions=function(){return new l}},function(r,s,a){var o=a(17).Options,l=a(2).Output,u=a(8).InputScanner,c=a(13).Directives,h=new c(/\/\*/,/\*\//),f=/\r\n|[\r\n]/,p=/\r\n|[\r\n]/g,g=/\s/,m=/(?:\s|\n)+/g,w=/\/\*(?:[\s\S]*?)((?:\*\/)|$)/g,T=/\/\/(?:[^\n\r\u2028\u2029]*)/g;function _(y,C){this._source_text=y||"",this._options=new o(C),this._ch=null,this._input=null,this.NESTED_AT_RULE={"@page":!0,"@font-face":!0,"@keyframes":!0,"@media":!0,"@supports":!0,"@document":!0},this.CONDITIONAL_GROUP_RULE={"@media":!0,"@supports":!0,"@document":!0}}_.prototype.eatString=function(y){var C="";for(this._ch=this._input.next();this._ch;){if(C+=this._ch,this._ch==="\\")C+=this._input.next();else if(y.indexOf(this._ch)!==-1||this._ch===`
`)break;this._ch=this._input.next()}return C},_.prototype.eatWhitespace=function(y){for(var C=g.test(this._input.peek()),R=0;g.test(this._input.peek());)this._ch=this._input.next(),y&&this._ch===`
`&&(R===0||R<this._options.max_preserve_newlines)&&(R++,this._output.add_new_line(!0));return C},_.prototype.foundNestedPseudoClass=function(){for(var y=0,C=1,R=this._input.peek(C);R;){if(R==="{")return!0;if(R==="(")y+=1;else if(R===")"){if(y===0)return!1;y-=1}else if(R===";"||R==="}")return!1;C++,R=this._input.peek(C)}return!1},_.prototype.print_string=function(y){this._output.set_indent(this._indentLevel),this._output.non_breaking_space=!0,this._output.add_token(y)},_.prototype.preserveSingleSpace=function(y){y&&(this._output.space_before_token=!0)},_.prototype.indent=function(){this._indentLevel++},_.prototype.outdent=function(){this._indentLevel>0&&this._indentLevel--},_.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var y=this._source_text,C=this._options.eol;C==="auto"&&(C=`
`,y&&f.test(y||"")&&(C=y.match(f)[0])),y=y.replace(p,`
`);var R=y.match(/^[\t ]*/)[0];this._output=new l(this._options,R),this._input=new u(y),this._indentLevel=0,this._nestedLevel=0,this._ch=null;for(var B=0,v=!1,b=!1,x=!1,q=!1,W=!1,A=this._ch,L,N,D;L=this._input.read(m),N=L!=="",D=A,this._ch=this._input.next(),this._ch==="\\"&&this._input.hasNext()&&(this._ch+=this._input.next()),A=this._ch,this._ch;)if(this._ch==="/"&&this._input.peek()==="*"){this._output.add_new_line(),this._input.back();var U=this._input.read(w),S=h.get_directives(U);S&&S.ignore==="start"&&(U+=h.readIgnored(this._input)),this.print_string(U),this.eatWhitespace(!0),this._output.add_new_line()}else if(this._ch==="/"&&this._input.peek()==="/")this._output.space_before_token=!0,this._input.back(),this.print_string(this._input.read(T)),this.eatWhitespace(!0);else if(this._ch==="@")if(this.preserveSingleSpace(N),this._input.peek()==="{")this.print_string(this._ch+this.eatString("}"));else{this.print_string(this._ch);var k=this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g);k.match(/[ :]$/)&&(k=this.eatString(": ").replace(/\s$/,""),this.print_string(k),this._output.space_before_token=!0),k=k.replace(/\s$/,""),k==="extend"?q=!0:k==="import"&&(W=!0),k in this.NESTED_AT_RULE?(this._nestedLevel+=1,k in this.CONDITIONAL_GROUP_RULE&&(x=!0)):!v&&B===0&&k.indexOf(":")!==-1&&(b=!0,this.indent())}else this._ch==="#"&&this._input.peek()==="{"?(this.preserveSingleSpace(N),this.print_string(this._ch+this.eatString("}"))):this._ch==="{"?(b&&(b=!1,this.outdent()),x?(x=!1,v=this._indentLevel>=this._nestedLevel):v=this._indentLevel>=this._nestedLevel-1,this._options.newline_between_rules&&v&&this._output.previous_line&&this._output.previous_line.item(-1)!=="{"&&this._output.ensure_empty_line_above("/",","),this._output.space_before_token=!0,this._options.brace_style==="expand"?(this._output.add_new_line(),this.print_string(this._ch),this.indent(),this._output.set_indent(this._indentLevel)):(this.indent(),this.print_string(this._ch)),this.eatWhitespace(!0),this._output.add_new_line()):this._ch==="}"?(this.outdent(),this._output.add_new_line(),D==="{"&&this._output.trim(!0),W=!1,q=!1,b&&(this.outdent(),b=!1),this.print_string(this._ch),v=!1,this._nestedLevel&&this._nestedLevel--,this.eatWhitespace(!0),this._output.add_new_line(),this._options.newline_between_rules&&!this._output.just_added_blankline()&&this._input.peek()!=="}"&&this._output.add_new_line(!0)):this._ch===":"?(v||x)&&!(this._input.lookBack("&")||this.foundNestedPseudoClass())&&!this._input.lookBack("(")&&!q&&B===0?(this.print_string(":"),b||(b=!0,this._output.space_before_token=!0,this.eatWhitespace(!0),this.indent())):(this._input.lookBack(" ")&&(this._output.space_before_token=!0),this._input.peek()===":"?(this._ch=this._input.next(),this.print_string("::")):this.print_string(":")):this._ch==='"'||this._ch==="'"?(this.preserveSingleSpace(N),this.print_string(this._ch+this.eatString(this._ch)),this.eatWhitespace(!0)):this._ch===";"?B===0?(b&&(this.outdent(),b=!1),q=!1,W=!1,this.print_string(this._ch),this.eatWhitespace(!0),this._input.peek()!=="/"&&this._output.add_new_line()):(this.print_string(this._ch),this.eatWhitespace(!0),this._output.space_before_token=!0):this._ch==="("?this._input.lookBack("url")?(this.print_string(this._ch),this.eatWhitespace(),B++,this.indent(),this._ch=this._input.next(),this._ch===")"||this._ch==='"'||this._ch==="'"?this._input.back():this._ch&&(this.print_string(this._ch+this.eatString(")")),B&&(B--,this.outdent()))):(this.preserveSingleSpace(N),this.print_string(this._ch),this.eatWhitespace(),B++,this.indent()):this._ch===")"?(B&&(B--,this.outdent()),this.print_string(this._ch)):this._ch===","?(this.print_string(this._ch),this.eatWhitespace(!0),this._options.selector_separator_newline&&!b&&B===0&&!W&&!q?this._output.add_new_line():this._output.space_before_token=!0):(this._ch===">"||this._ch==="+"||this._ch==="~")&&!b&&B===0?this._options.space_around_combinator?(this._output.space_before_token=!0,this.print_string(this._ch),this._output.space_before_token=!0):(this.print_string(this._ch),this.eatWhitespace(),this._ch&&g.test(this.
`);u!==-1?this.__character_count=l.length-u:this.__character_count+=l.length},s.prototype.pop=function(){var l=null;return this.is_empty()||(l=this.__items.pop(),this.__character_count-=l.length),l},s.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},s.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},s.prototype.trim=function(){for(;this.last()===" ";)this.__items.pop(),this.__character_count-=1},s.prototype.toString=function(){var l="";return this.is_empty()?this.__parent.indent_empty_lines&&(l=this.__parent.get_indent_string(this.__indent_count)):(l=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),l+=this.__items.join("")),l};function a(l,u){this.__cache=[""],this.__indent_size=l.indent_size,this.__indent_string=l.indent_char,l.indent_with_tabs||(this.__indent_string=new Array(l.indent_size+1).join(l.indent_char)),u=u||"",l.indent_level>0&&(u=new Array(l.indent_level+1).join(this.__indent_string)),this.__base_string=u,this.__base_string_length=u.length}a.prototype.get_indent_size=function(l,u){var c=this.__base_string_length;return u=u||0,l<0&&(c=0),c+=l*this.__indent_size,c+=u,c},a.prototype.get_indent_string=function(l,u){var c=this.__base_string;return u=u||0,l<0&&(l=0,c=""),u+=l*this.__indent_size,this.__ensure_cache(u),c+=this.__cache[u],c},a.prototype.__ensure_cache=function(l){for(;l>=this.__cache.length;)this.__add_column()},a.prototype.__add_column=function(){var l=this.__cache.length,u=0,c="";this.__indent_size&&l>=this.__indent_size&&(u=Math.floor(l/this.__indent_size),l-=u*this.__indent_size,c=new Array(u+1).join(this.__indent_string)),l&&(c+=new Array(l+1).join(" ")),this.__cache.push(c)};function o(l,u){this.__indent_cache=new a(l,u),this.raw=!1,this._end_with_newline=l.end_with_newline,this.indent_size=l.indent_size,this.wrap_line_length=l.wrap_line_length,this.indent_empty_lines=l.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new s(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}o.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},o.prototype.get_line_number=function(){return this.__lines.length},o.prototype.get_indent_string=function(l,u){return this.__indent_cache.get_indent_string(l,u)},o.prototype.get_indent_size=function(l,u){return this.__indent_cache.get_indent_size(l,u)},o.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},o.prototype.add_new_line=function(l){return this.is_empty()||!l&&this.just_added_newline()?!1:(this.raw||this.__add_outputline(),!0)},o.prototype.get_code=function(l){this.trim(!0);var u=this.current_line.pop();u&&(u[u.length-1]===`
`&&(u=u.replace(/\n+$/g,"")),this.current_line.push(u)),this._end_with_newline&&this.__add_outputline();var c=this.__lines.join(`
`);return l!==`
`&&(c=c.replace(/[\n]/g,l)),c},o.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},o.prototype.set_indent=function(l,u){return l=l||0,u=u||0,this.next_line.set_indent(l,u),this.__lines.length>1?(this.current_line.set_indent(l,u),!0):(this.current_line.set_indent(),!1)},o.prototype.add_raw_token=function(l){for(var u=0;u<l.newlines;u++)this.__add_outputline();this.current_line.set_indent(-1),this.current_line.push(l.whitespace_before),this.current_line.push(l.text),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1},o.prototype.add_token=function(l){this.__add_space_before_token(),this.current_line.push(l),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=this.current_line._allow_wrap()},o.prototype.__add_space_before_token=function(){this.space_before_token&&!this.just_added_newline()&&(this.non_breaking_space||this.set_wrap_point(),this.current_line.push(" "))},o.prototype.remove_indent=function(l){for(var u=this.__lines.length;l<u;)this.__lines[l]._remove_indent(),l++;this.current_line._remove_wrap_indent()},o.prototype.trim=function(l){for(l=l===void 0?!1:l,this.current_line.trim();l&&this.__lines.length>1&&this.current_line.is_empty();)this.__lines.pop(),this.current_line=this.__lines[this.__lines.length-1],this.current_line.trim();this.previous_line=this.__lines.length>1?this.__lines[this.__lines.length-2]:null},o.prototype.just_added_newline=function(){return this.current_line.is_empty()},o.prototype.just_added_blankline=function(){return this.is_empty()||this.current_line.is_empty()&&this.previous_line.is_empty()},o.prototype.ensure_empty_line_above=function(l,u){for(var c=this.__lines.length-2;c>=0;){var h=this.__lines[c];if(h.is_empty())break;if(h.item(0).indexOf(l)!==0&&h.item(-1)!==u){this.__lines.splice(c+1,0,new s(this)),this.previous_line=this.__lines[this.__lines.length-2];break}c--}},r.exports.Output=o},function(r){function s(a,o,l,u){this.type=a,this.text=o,this.comments_before=null,this.newlines=l||0,this.whitespace_before=u||"",this.parent=null,this.next=null,this.previous=null,this.opened=null,this.closed=null,this.directives=null}r.exports.Token=s},,,function(r){function s(l,u){this.raw_options=a(l,u),this.disabled=this._get_boolean("disabled"),this.eol=this._get_characters("eol","auto"),this.end_with_newline=this._get_boolean("end_with_newline"),this.indent_size=this._get_number("indent_size",4),this.indent_char=this._get_characters("indent_char"," "),this.indent_level=this._get_number("indent_level"),this.preserve_newlines=this._get_boolean("preserve_newlines",!0),this.max_preserve_newlines=this._get_number("max_preserve_newlines",32786),this.preserve_newlines||(this.max_preserve_newlines=0),this.indent_with_tabs=this._get_boolean("indent_with_tabs",this.indent_char===" "),this.indent_with_tabs&&(this.indent_char=" ",this.indent_size===1&&(this.indent_size=4)),this.wrap_line_length=this._get_number("wrap_line_length",this._get_number("max_char")),this.indent_empty_lines=this._get_boolean("indent_empty_lines"),this.templating=this._get_selection_list("templating",["auto","none","django","erb","handlebars","php","smarty"],["auto"])}s.prototype._get_array=function(l,u){var c=this.raw_options[l],h=u||[];return typeof c=="object"?c!==null&&typeof c.concat=="function"&&(h=c.concat()):typeof c=="string"&&(h=c.split(/[^a-zA-Z0-9_\/\-]+/)),h},s.prototype._get_boolean=function(l,u){var c=this.raw_options[l],h=c===void 0?!!u:!!c;return h},s.prototype._get_characters=function(l,u){var c=this.raw_options[l],h=u||"";return typeof c=="string"&&(h=c.replace(/\\r/,"\r").replace(/\\n/,`
`).replace(/\\t/," ")),h},s.prototype._get_number=function(l,u){var c=this.raw_options[l];u=parseInt(u,10),isNaN(u)&&(u=0);var h=parseInt(c,10);return isNaN(h)&&(h=u),h},s.prototype._get_selection=function(l,u,c){var h=this._get_selection_list(l,u,c);if(h.length!==1)throw new Error("Invalid Option Value: The option '"+l+`' can only be one of the following values:
`+u+`
You passed in: '`+this.raw_options[l]+"'");return h[0]},s.prototype._get_selection_list=function(l,u,c){if(!u||u.length===0)throw new Error("Selection list cannot be empty.");if(c=c||[u[0]],!this._is_valid_selection(c,u))throw new Error("Invalid Default Value!");var h=this._get_array(l,c);if(!this._is_valid_selection(h,u))throw new Error("Invalid Option Value: The option '"+l+`' can contain only the following values:
`+u+`
You passed in: '`+this.raw_options[l]+"'");return h},s.prototype._is_valid_selection=function(l,u){return l.length&&u.length&&!l.some(function(c){return u.indexOf(c)===-1})};function a(l,u){var c={};l=o(l);var h;for(h in l)h!==u&&(c[h]=l[h]);if(u&&l[u])for(h in l[u])c[h]=l[u][h];return c}function o(l){var u={},c;for(c in l){var h=c.replace(/-/g,"_");u[h]=l[c]}return u}r.exports.Options=s,r.exports.normalizeOpts=o,r.exports.mergeOpts=a},,function(r){var s=RegExp.prototype.hasOwnProperty("sticky");function a(o){this.__input=o||"",this.__input_length=this.__input.length,this.__position=0}a.prototype.restart=function(){this.__position=0},a.prototype.back=function(){this.__position>0&&(this.__position-=1)},a.prototype.hasNext=function(){return this.__position<this.__input_length},a.prototype.next=function(){var o=null;return this.hasNext()&&(o=this.__input.charAt(this.__position),this.__position+=1),o},a.prototype.peek=function(o){var l=null;return o=o||0,o+=this.__position,o>=0&&o<this.__input_length&&(l=this.__input.charAt(o)),l},a.prototype.__match=function(o,l){o.lastIndex=l;var u=o.exec(this.__input);return u&&!(s&&o.sticky)&&u.index!==l&&(u=null),u},a.prototype.test=function(o,l){return l=l||0,l+=this.__position,l>=0&&l<this.__input_length?!!this.__match(o,l):!1},a.prototype.testChar=function(o,l){var u=this.peek(l);return o.lastIndex=0,u!==null&&o.test(u)},a.prototype.match=function(o){var l=this.__match(o,this.__position);return l?this.__position+=l[0].length:l=null,l},a.prototype.read=function(o,l,u){var c="",h;return o&&(h=this.match(o),h&&(c+=h[0])),l&&(h||!o)&&(c+=this.readUntil(l,u)),c},a.prototype.readUntil=function(o,l){var u="",c=this.__position;o.lastIndex=this.__position;var h=o.exec(this.__input);return h?(c=h.index,l&&(c+=h[0].length)):c=this.__input_length,u=this.__input.substring(this.__position,c),this.__position=c,u},a.prototype.readUntilAfter=function(o){return this.readUntil(o,!0)},a.prototype.get_regexp=function(o,l){var u=null,c="g";return l&&s&&(c="y"),typeof o=="string"&&o!==""?u=new RegExp(o,c):o&&(u=new RegExp(o.source,c)),u},a.prototype.get_literal_regexp=function(o){return RegExp(o.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"))},a.prototype.peekUntilAfter=function(o){var l=this.__position,u=this.readUntilAfter(o);return this.__position=l,u},a.prototype.lookBack=function(o){var l=this.__position-1;return l>=o.length&&this.__input.substring(l-o.length,l).toLowerCase()===o},r.exports.InputScanner=a},function(r,s,a){var o=a(8).InputScanner,l=a(3).Token,u=a(10).TokenStream,c=a(11).WhitespacePattern,h={START:"TK_START",RAW:"TK_RAW",EOF:"TK_EOF"},f=function(p,g){this._input=new o(p),this._options=g||{},this.__tokens=null,this._patterns={},this._patterns.whitespace=new c(this._input)};f.prototype.tokenize=function(){this._input.restart(),this.__tokens=new u,this._reset();for(var p,g=new l(h.START,""),m=null,w=[],T=new u;g.type!==h.EOF;){for(p=this._get_next_token(g,m);this._is_comment(p);)T.add(p),p=this._get_next_token(g,m);T.isEmpty()||(p.comments_before=T,T=new u),p.parent=m,this._is_opening(p)?(w.push(m),m=p):m&&this._is_closing(p,m)&&(p.opened=m,m.closed=p,m=w.pop(),p.parent=m),p.previous=g,g.next=p,this.__tokens.add(p),g=p}return this.__tokens},f.prototype._is_first_token=function(){return this.__tokens.isEmpty()},f.prototype._reset=function(){},f.prototype._get_next_token=function(p,g){this._readWhitespace();var m=this._input.read(/.+/g);return m?this._create_token(h.RAW,m):this._create_token(h.EOF,"")},f.prototype._is_comment=function(p){return!1},f.prototype._is_opening=function(p){return!1},f.prototype._is_closing=function(p,g){return!1},f.prototype._create_token=function(p,g){var m=new l(p,g,this._patterns.whitespace.newline_count,this._patterns.whitespace.whitespace_before_token);return m},f.prototype._readWhitespace=function(){return this._patterns.whitespace.read()},r.exports.Tokenizer=f,r.exports.TOKEN=h},function(r){function s(a){this.__tokens=[],this.__tokens_length=this.__tokens.length,this.__position=0,this.__parent_token=a}s.prototype.restart=function(){this.__position=0},s.prototype.
`,v&&h.test(v)&&(b=v.match(h)[0])),v=v.replace(f,`
`);var x=v.match(/^[\t ]*/)[0],q={text:"",type:""},W=new C,A=new p(this._options,x),L=new u(v,this._options).tokenize();this._tag_stack=new _(A);for(var N=null,D=L.next();D.type!==c.EOF;)D.type===c.TAG_OPEN||D.type===c.COMMENT?(N=this._handle_tag_open(A,D,W,q),W=N):D.type===c.ATTRIBUTE||D.type===c.EQUALS||D.type===c.VALUE||D.type===c.TEXT&&!W.tag_complete?N=this._handle_inside_tag(A,D,W,L):D.type===c.TAG_CLOSE?N=this._handle_tag_close(A,D,W):D.type===c.TEXT?N=this._handle_text(A,D,W):A.add_raw_token(D),q=N,D=L.next();var U=A._output.get_code(b);return U},y.prototype._handle_tag_close=function(v,b,x){var q={text:b.text,type:b.type};return v.alignment_size=0,x.tag_complete=!0,v.set_space_before_token(b.newlines||b.whitespace_before!=="",!0),x.is_unformatted?v.add_raw_token(b):(x.tag_start_char==="<"&&(v.set_space_before_token(b.text[0]==="/",!0),this._is_wrap_attributes_force_expand_multiline&&x.has_wrapped_attrs&&v.print_newline(!1)),v.print_token(b)),x.indent_content&&!(x.is_unformatted||x.is_content_unformatted)&&(v.indent(),x.indent_content=!1),!x.is_inline_element&&!(x.is_unformatted||x.is_content_unformatted)&&v.set_wrap_point(),q},y.prototype._handle_inside_tag=function(v,b,x,q){var W=x.has_wrapped_attrs,A={text:b.text,type:b.type};if(v.set_space_before_token(b.newlines||b.whitespace_before!=="",!0),x.is_unformatted)v.add_raw_token(b);else if(x.tag_start_char==="{"&&b.type===c.TEXT)v.print_preserved_newlines(b)?(b.newlines=0,v.add_raw_token(b)):v.print_token(b);else{if(b.type===c.ATTRIBUTE?(v.set_space_before_token(!0),x.attr_count+=1):(b.type===c.EQUALS||b.type===c.VALUE&&b.previous.type===c.EQUALS)&&v.set_space_before_token(!1),b.type===c.ATTRIBUTE&&x.tag_start_char==="<"&&((this._is_wrap_attributes_preserve||this._is_wrap_attributes_preserve_aligned)&&(v.traverse_whitespace(b),W=W||b.newlines!==0),this._is_wrap_attributes_force)){var L=x.attr_count>1;if(this._is_wrap_attributes_force_expand_multiline&&x.attr_count===1){var N=!0,D=0,U;do{if(U=q.peek(D),U.type===c.ATTRIBUTE){N=!1;break}D+=1}while(D<4&&U.type!==c.EOF&&U.type!==c.TAG_CLOSE);L=!N}L&&(v.print_newline(!1),W=!0)}v.print_token(b),W=W||v.previous_token_wrapped(),x.has_wrapped_attrs=W}return A},y.prototype._handle_text=function(v,b,x){var q={text:b.text,type:"TK_CONTENT"};return x.custom_beautifier_name?this._print_custom_beatifier_text(v,b,x):x.is_unformatted||x.is_content_unformatted?v.add_raw_token(b):(v.traverse_whitespace(b),v.print_token(b)),q},y.prototype._print_custom_beatifier_text=function(v,b,x){var q=this;if(b.text!==""){var W=b.text,A,L=1,N="",D="";x.custom_beautifier_name==="javascript"&&typeof this._js_beautify=="function"?A=this._js_beautify:x.custom_beautifier_name==="css"&&typeof this._css_beautify=="function"?A=this._css_beautify:x.custom_beautifier_name==="html"&&(A=function(I,z){var P=new y(I,z,q._js_beautify,q._css_beautify);return P.beautify()}),this._options.indent_scripts==="keep"?L=0:this._options.indent_scripts==="separate"&&(L=-v.indent_level);var U=v.get_full_indent(L);if(W=W.replace(/\n[ \t]*$/,""),x.custom_beautifier_name!=="html"&&W[0]==="<"&&W.match(/^(<!--|<!\[CDATA\[)/)){var S=/^(<!--[^\n]*|<!\[CDATA\[)(\n?)([ \t\n]*)([\s\S]*)(-->|]]>)$/.exec(W);if(!S){v.add_raw_token(b);return}N=U+S[1]+`
`,W=S[4],S[5]&&(D=U+S[5]),W=W.replace(/\n[ \t]*$/,""),(S[2]||S[3].indexOf(`
`)!==-1)&&(S=S[3].match(/[ \t]+$/),S&&(b.whitespace_before=S[0]))}if(W)if(A){var k=function(){this.eol=`
`};k.prototype=this._options.raw_options;var M=new k;W=A(U+W,M)}else{var F=b.whitespace_before;F&&(W=W.replace(new RegExp(`
(`+F+")?","g"),`
`)),W=U+W.replace(/\n/g,`
`+U)}N&&(W?W=N+W+`
`+D:W=N+D),v.print_newline(!1),W&&(b.text=W,b.whitespace_before="",b.newlines=0,v.add_raw_token(b),v.print_newline(!0))}},y.prototype._handle_tag_open=function(v,b,x,q){var W=this._get_tag_open_token(b);return(x.is_unformatted||x.is_content_unformatted)&&!x.is_empty_element&&b.type===c.TAG_OPEN&&b.text.indexOf("</")===0?(v.add_raw_token(b),W.start_tag_token=this._tag_stack.try_pop(W.tag_name)):(v.traverse_whitespace(b),this._set_tag_position(v,b,W,x,q),W.is_inline_element||v.set_wrap_point(),v.print_token(b)),(this._is_wrap_attributes_force_aligned||this._is_wrap_attributes_aligned_multiple||this._is_wrap_attributes_preserve_aligned)&&(W.alignment_size=b.text.length+1),!W.tag_complete&&!W.is_unformatted&&(v.alignment_size=W.alignment_size),W};var C=function(v,b){if(this.parent=v||null,this.text="",this.type="TK_TAG_OPEN",this.tag_name="",this.is_inline_element=!1,this.is_unformatted=!1,this.is_content_unformatted=!1,this.is_empty_element=!1,this.is_start_tag=!1,this.is_end_tag=!1,this.indent_content=!1,this.multiline_content=!1,this.custom_beautifier_name=null,this.start_tag_token=null,this.attr_count=0,this.has_wrapped_attrs=!1,this.alignment_size=0,this.tag_complete=!1,this.tag_start_char="",this.tag_check="",!b)this.tag_complete=!0;else{var x;this.tag_start_char=b.text[0],this.text=b.text,this.tag_start_char==="<"?(x=b.text.match(/^<([^\s>]*)/),this.tag_check=x?x[1]:""):(x=b.text.match(/^{{(?:[\^]|#\*?)?([^\s}]+)/),this.tag_check=x?x[1]:"",b.text==="{{#>"&&this.tag_check===">"&&b.next!==null&&(this.tag_check=b.next.text)),this.tag_check=this.tag_check.toLowerCase(),b.type===c.COMMENT&&(this.tag_complete=!0),this.is_start_tag=this.tag_check.charAt(0)!=="/",this.tag_name=this.is_start_tag?this.tag_check:this.tag_check.substr(1),this.is_end_tag=!this.is_start_tag||b.closed&&b.closed.text==="/>",this.is_end_tag=this.is_end_tag||this.tag_start_char==="{"&&(this.text.length<3||/[^#\^]/.test(this.text.charAt(2)))}};y.prototype._get_tag_open_token=function(v){var b=new C(this._tag_stack.get_parser_token(),v);return b.alignment_size=this._options.wrap_attributes_indent_size,b.is_end_tag=b.is_end_tag||w(b.tag_check,this._options.void_elements),b.is_empty_element=b.tag_complete||b.is_start_tag&&b.is_end_tag,b.is_unformatted=!b.tag_complete&&w(b.tag_check,this._options.unformatted),b.is_content_unformatted=!b.is_empty_element&&w(b.tag_check,this._options.content_unformatted),b.is_inline_element=w(b.tag_name,this._options.inline)||b.tag_start_char==="{",b},y.prototype._set_tag_position=function(v,b,x,q,W){if(x.is_empty_element||(x.is_end_tag?x.start_tag_token=this._tag_stack.try_pop(x.tag_name):(this._do_optional_end_element(x)&&(x.is_inline_element||v.print_newline(!1)),this._tag_stack.record_tag(x),(x.tag_name==="script"||x.tag_name==="style")&&!(x.is_unformatted||x.is_content_unformatted)&&(x.custom_beautifier_name=m(x.tag_check,b)))),w(x.tag_check,this._options.extra_liners)&&(v.print_newline(!1),v._output.just_added_blankline()||v.print_newline(!0)),x.is_empty_element){if(x.tag_start_char==="{"&&x.tag_check==="else"){this._tag_stack.indent_to_tag(["if","unless","each"]),x.indent_content=!0;var A=v.current_line_has_match(/{{#if/);A||v.print_newline(!1)}x.tag_name==="!--"&&W.type===c.TAG_CLOSE&&q.is_end_tag&&x.text.indexOf(`
`)===-1||(x.is_inline_element||x.is_unformatted||v.print_newline(!1),this._calcluate_parent_multiline(v,x))}else if(x.is_end_tag){var L=!1;L=x.start_tag_token&&x.start_tag_token.multiline_content,L=L||!x.is_inline_element&&!(q.is_inline_element||q.is_unformatted)&&!(W.type===c.TAG_CLOSE&&x.start_tag_token===q)&&W.type!=="TK_CONTENT",(x.is_content_unformatted||x.is_unformatted)&&(L=!1),L&&v.print_newline(!1)}else x.indent_content=!x.custom_beautifier_name,x.tag_start_char==="<"&&(x.tag_name==="html"?x.indent_content=this._options.indent_inner_html:x.tag_name==="head"?x.indent_content=this._options.indent_head_inner_html:x.tag_name==="body"&&(x.indent_content=this._options.indent_body_inner_html)),!(x.is_inline_element||x.is_unformatted)&&(W.type!=="TK_CONTENT"||x.is_content_unformatted)&&v.print_newline(!1),this._calcluate_parent_multiline(v,x)},y.prototype._calcluate_parent_multiline=function(v,b){b.parent&&v._output.just_added_newline()&&!((b.is_inline_element||b.is_unformatted)&&b.parent.is_inline_element)&&(b.parent.multiline_content=!0)};var R=["address","article","aside","blockquote","details","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hr","main","nav","ol","p","pre","section","table","ul"],B=["a","audio","del","ins","map","noscript","video"];y.prototype._do_optional_end_element=function(v){var b=null;if(!(v.is_empty_element||!v.is_start_tag||!v.parent)){if(v.tag_name==="body")b=b||this._tag_stack.try_pop("head");else if(v.tag_name==="li")b=b||this._tag_stack.try_pop("li",["ol","ul"]);else if(v.tag_name==="dd"||v.tag_name==="dt")b=b||this._tag_stack.try_pop("dt",["dl"]),b=b||this._tag_stack.try_pop("dd",["dl"]);else if(v.parent.tag_name==="p"&&R.indexOf(v.tag_name)!==-1){var x=v.parent.parent;(!x||B.indexOf(x.tag_name)===-1)&&(b=b||this._tag_stack.try_pop("p"))}else v.tag_name==="rp"||v.tag_name==="rt"?(b=b||this._tag_stack.try_pop("rt",["ruby","rtc"]),b=b||this._tag_stack.try_pop("rp",["ruby","rtc"])):v.tag_name==="optgroup"?b=b||this._tag_stack.try_pop("optgroup",["select"]):v.tag_name==="option"?b=b||this._tag_stack.try_pop("option",["select","datalist","optgroup"]):v.tag_name==="colgroup"?b=b||this._tag_stack.try_pop("caption",["table"]):v.tag_name==="thead"?(b=b||this._tag_stack.try_pop("caption",["table"]),b=b||this._tag_stack.try_pop("colgroup",["table"])):v.tag_name==="tbody"||v.tag_name==="tfoot"?(b=b||this._tag_stack.try_pop("caption",["table"]),b=b||this._tag_stack.try_pop("colgroup",["table"]),b=b||this._tag_stack.try_pop("thead",["table"]),b=b||this._tag_stack.try_pop("tbody",["table"])):v.tag_name==="tr"?(b=b||this._tag_stack.try_pop("caption",["table"]),b=b||this._tag_stack.try_pop("colgroup",["table"]),b=b||this._tag_stack.try_pop("tr",["table","thead","tbody","tfoot"])):(v.tag_name==="th"||v.tag_name==="td")&&(b=b||this._tag_stack.try_pop("td",["table","thead","tbody","tfoot","tr"]),b=b||this._tag_stack.try_pop("th",["table","thead","tbody","tfoot","tr"]));return v.parent=this._tag_stack.get_parser_token(),b}},r.exports.Beautifier=y},function(r,s,a){var o=a(6).Options;function l(u){o.call(this,u,"html"),this.templating.length===1&&this.templating[0]==="auto"&&(this.templating=["django","erb","handlebars","php"]),this.indent_inner_html=this._get_boolean("indent_inner_html"),this.indent_body_inner_html=this._get_boolean("indent_body_inner_html",!0),this.indent_head_inner_html=this._get_boolean("indent_head_inner_html",!0),this.indent_handlebars=this._get_boolean("indent_handlebars",!0),this.wrap_attributes=this._get_selection("wrap_attributes",["auto","force","force-aligned","force-expand-multiline","aligned-multiple","preserve","preserve-aligned"]),this.wrap_attributes_indent_size=this._get_number("wrap_attributes_indent_size",this.indent_size),this.extra_liners=this._get_array("extra_liners",["head","body","/html"]),this.inline=this._get_array("inline",["a","abbr","area","audio","b","bdi","bdo","br","button","canvas","cite","code","data","datalist","del","dfn","em","embed","i","iframe","img","input","ins","kbd","keygen","label","map","mark","
`,indent_scripts:Te(n,"indentScripts","normal"),templating:ph(n,"all"),unformatted_content_delimiter:Te(n,"unformattedContentDelimiter","")},g=dh(mh(i),p);if(s>0){var m=n.insertSpaces?to(" ",a*s):to(" ",s);g=g.split(`
`).join(`
`+m),t.start.character===0&&(g=m+g)}return[{range:t,newText:g}]}function mh(e){return e.replace(/^\s+/,"")}function Te(e,t,n){if(e&&e.hasOwnProperty(t)){var i=e[t];if(i!==null)return i}return n}function qi(e,t,n){var i=Te(e,t,null);return typeof i=="string"?i.length>0?i.split(",").map(function(r){return r.trim().toLowerCase()}):[]:n}function ph(e,t){var n=Te(e,"templating",t);return n===!0?["auto"]:["none"]}function gh(e,t,n){for(var i=t,r=0,s=n.tabSize||4;i<e.length;){var a=e.charAt(i);if(a===" ")r++;else if(a===" ")r+=s;else break;i++}return Math.floor(r/s)}function lo(e,t){return`\r
`.indexOf(e.charAt(t))!==-1}function uo(e,t){return" ".indexOf(e.charAt(t))!==-1}var co;co=(()=>{"use strict";var e={470:i=>{function r(o){if(typeof o!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(o))}function s(o,l){for(var u,c="",h=0,f=-1,p=0,g=0;g<=o.length;++g){if(g<o.length)u=o.charCodeAt(g);else{if(u===47)break;u=47}if(u===47){if(!(f===g-1||p===1))if(f!==g-1&&p===2){if(c.length<2||h!==2||c.charCodeAt(c.length-1)!==46||c.charCodeAt(c.length-2)!==46){if(c.length>2){var m=c.lastIndexOf("/");if(m!==c.length-1){m===-1?(c="",h=0):h=(c=c.slice(0,m)).length-1-c.lastIndexOf("/"),f=g,p=0;continue}}else if(c.length===2||c.length===1){c="",h=0,f=g,p=0;continue}}l&&(c.length>0?c+="/..":c="..",h=2)}else c.length>0?c+="/"+o.slice(f+1,g):c=o.slice(f+1,g),h=g-f-1;f=g,p=0}else u===46&&p!==-1?++p:p=-1}return c}var a={resolve:function(){for(var o,l="",u=!1,c=arguments.length-1;c>=-1&&!u;c--){var h;c>=0?h=arguments[c]:(o===void 0&&(o=process.cwd()),h=o),r(h),h.length!==0&&(l=h+"/"+l,u=h.charCodeAt(0)===47)}return l=s(l,!u),u?l.length>0?"/"+l:"/":l.length>0?l:"."},normalize:function(o){if(r(o),o.length===0)return".";var l=o.charCodeAt(0)===47,u=o.charCodeAt(o.length-1)===47;return(o=s(o,!l)).length!==0||l||(o="."),o.length>0&&u&&(o+="/"),l?"/"+o:o},isAbsolute:function(o){return r(o),o.length>0&&o.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var o,l=0;l<arguments.length;++l){var u=arguments[l];r(u),u.length>0&&(o===void 0?o=u:o+="/"+u)}return o===void 0?".":a.normalize(o)},relative:function(o,l){if(r(o),r(l),o===l||(o=a.resolve(o))===(l=a.resolve(l)))return"";for(var u=1;u<o.length&&o.charCodeAt(u)===47;++u);for(var c=o.length,h=c-u,f=1;f<l.length&&l.charCodeAt(f)===47;++f);for(var p=l.length-f,g=h<p?h:p,m=-1,w=0;w<=g;++w){if(w===g){if(p>g){if(l.charCodeAt(f+w)===47)return l.slice(f+w+1);if(w===0)return l.slice(f+w)}else h>g&&(o.charCodeAt(u+w)===47?m=w:w===0&&(m=0));break}var T=o.charCodeAt(u+w);if(T!==l.charCodeAt(f+w))break;T===47&&(m=w)}var _="";for(w=u+m+1;w<=c;++w)w!==c&&o.charCodeAt(w)!==47||(_.length===0?_+="..":_+="/..");return _.length>0?_+l.slice(f+m):(f+=m,l.charCodeAt(f)===47&&++f,l.slice(f))},_makeLong:function(o){return o},dirname:function(o){if(r(o),o.length===0)return".";for(var l=o.charCodeAt(0),u=l===47,c=-1,h=!0,f=o.length-1;f>=1;--f)if((l=o.charCodeAt(f))===47){if(!h){c=f;break}}else h=!1;return c===-1?u?"/":".":u&&c===1?"//":o.slice(0,c)},basename:function(o,l){if(l!==void 0&&typeof l!="string")throw new TypeError('"ext" argument must be a string');r(o);var u,c=0,h=-1,f=!0;if(l!==void 0&&l.length>0&&l.length<=o.length){if(l.length===o.length&&l===o)return"";var p=l.length-1,g=-1;for(u=o.length-1;u>=0;--u){var m=o.charCodeAt(u);if(m===47){if(!f){c=u+1;break}}else g===-1&&(f=!1,g=u+1),p>=0&&(m===l.charCodeAt(p)?--p==-1&&(h=u):(p=-1,h=g))}return c===h?h=g:h===-1&&(h=o.length),o.slice(c,h)}for(u=o.length-1;u>=0;--u)if(o.charCodeAt(u)===47){if(!f){c=u+1;break}}else h===-1&&(f=!1,h=u+1);return h===-1?"":o.slice(c,h)},extname:function(o){r(o);for(var l=-1,u=0,c=-1,h=!0,f=0,p=o.length-1;p>=0;--p){var g=o.charCodeAt(p);if(g!==47)c===-1&&(h=!1,c=p+1),g===46?l===-1?l=p:f!==1&&(f=1):l!==-1&&(f=-1);else if(!h){u=p+1;break}}return l===-1||c===-1||f===0||f===1&&l===c-1&&l===u+1?"":o.slice(l,c)},format:function(o){if(o===null||typeof o!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof o);return function(l,u){var c=u.dir||u.root,h=u.base||(u.name||"")+(u.ext||"");return c?c===u.root?c+h:c+"/"+h:h}(0,o)},parse:function(o){r(o);var l={root:"",dir:"",base:"",ext:"",name:""};if(o.length===0)return l;var u,c=o.charCodeAt(0),h=c===47;h?(l.root="/",u=1):u=0;for(var f=-1,p=0,g=-1,m=!0,w=o.length-1,T=0;w>=u;--w)if((c=o.charCodeAt(w))!==47)g===-1&&(m=!1,g=w+1),c===46?f===-1?f=w:T!==1&&(T=1):f!==-1&&(T=-1);else if(!m){p=w+1;break}return f===-1||g===-1||T===0||T===1&&f===g-1&&f===p+1?g!==-1&&(l.base=l.name=p===0&&h?o.slice(1,g):o.slice(p,g)):(p===0&&h?(l.name=o.slice(1,f),l.base=o.slice(1,g)):(l.name=o.slice(p,f),l.base=o.slice
This metadata name is associated with the value contained by the [\`content\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) attribute. The possible values for the name attribute are:
* \`application-name\` which defines the name of the application running in the web page.
**Note:**
* Browsers may use this to identify the application. It is different from the [\`<title>\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title "The HTML Title element (<title>) defines the document's title that is shown in a browser's title bar or a page's tab.") element, which usually contain the application name, but may also contain information like the document name or a status.
* Simple web pages shouldn't define an application-name.
* \`author\` which defines the name of the document's author.
* \`description\` which contains a short and accurate summary of the content of the page. Several browsers, like Firefox and Opera, use this as the default description of bookmarked pages.
* \`generator\` which contains the identifier of the software that generated the page.
* \`keywords\` which contains words relevant to the page's content separated by commas.
* \`referrer\` which controls the [\`Referer\` HTTP header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer) attached to requests sent from the document:
Values for the \`content\` attribute of \`<meta name="referrer">\`
\`no-referrer\`
Do not send a HTTP \`Referrer\` header.
\`origin\`
Send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) of the document.
\`no-referrer-when-downgrade\`
Send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) as a referrer to URLs as secure as the current page, (https\u2192https), but does not send a referrer to less secure URLs (https\u2192http). This is the default behaviour.
\`origin-when-cross-origin\`
Send the full URL (stripped of parameters) for same-origin requests, but only send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) for other cases.
\`same-origin\`
A referrer will be sent for [same-site origins](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy), but cross-origin requests will contain no referrer information.
\`strict-origin\`
Only send the origin of the document as the referrer to a-priori as-much-secure destination (HTTPS->HTTPS), but don't send it to a less secure destination (HTTPS->HTTP).
\`strict-origin-when-cross-origin\`
Send a full URL when performing a same-origin request, only send the origin of the document to a-priori as-much-secure destination (HTTPS->HTTPS), and send no header to a less secure destination (HTTPS->HTTP).
\`unsafe-URL\`
Send the full URL (stripped of parameters) for same-origin or cross-origin requests.
**Notes:**
* Some browsers support the deprecated values of \`always\`, \`default\`, and \`never\` for referrer.
* Dynamically inserting \`<meta name="referrer">\` (with [\`document.write\`](https://developer.mozilla.org/en-US/docs/Web/API/Document/write) or [\`appendChild\`](https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild)) makes the referrer behaviour unpredictable.
* When several conflicting policies are defined, the no-referrer policy is applied.
This attribute may also have a value taken from the extended list defined on [WHATWG Wiki MetaExtensions page](https://wiki.whatwg.org/wiki/MetaExtensions). Although none have been formally accepted yet, a few commonly used names are:
* \`creator\` which defines the name of the creator of the document, such as an organization or institution. If there are more than one, several [\`<meta>\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta "The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.") elements should be used.
* \`googlebot\`, a synonym of \`robots\`, is only followed by Googlebot (the indexing crawler for Google).
* \`publisher\` which defines the name of the document's publisher.
* \`robots\` which defines the behaviour that cooperative crawlers, or "robots", should use with the page. It is a comma-separated list of the values below:
Values for the content of \`<meta name="robots">\`
Value
Description
Used by
\`index\`
Allows the robot to index the page (default).
All
\`noindex\`
Requests the robot to not index the page.
All
\`follow\`
Allows the robot to follow the links on the page (default).
All
\`nofollow\`
Requests the robot to not follow the links on the page.
All
\`none\`
Equivalent to \`noindex, nofollow\`
[Google](https://support.google.com/webmasters/answer/79812)
\`noodp\`
Prevents using the [Open Directory Project](https://www.dmoz.org/) description, if any, as the page description in search engine results.
[Google](https://support.google.com/webmasters/answer/35624#nodmoz), [Yahoo](https://help.yahoo.com/kb/search-for-desktop/meta-tags-robotstxt-yahoo-search-sln2213.html#cont5), [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)
\`noarchive\`
Requests the search engine not to cache the page content.
[Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives), [Yahoo](https://help.yahoo.com/kb/search-for-desktop/SLN2213.html), [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)
\`nosnippet\`
Prevents displaying any description of the page in search engine results.
[Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives), [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)
\`noimageindex\`
Requests this page not to appear as the referring page of an indexed image.
[Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives)
\`nocache\`
Synonym of \`noarchive\`.
[Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)
**Notes:**
* Only cooperative robots follow these rules. Do not expect to prevent e-mail harvesters with them.
* The robot still needs to access the page in order to read these rules. To prevent bandwidth consumption, use a _[robots.txt](https://developer.mozilla.org/en-US/docs/Glossary/robots.txt "robots.txt: Robots.txt is a file which is usually placed in the root of any website. It decides whether\xA0crawlers are permitted or forbidden access to the web site.")_ file.
* If you want to remove a page, \`noindex\` will work, but only after the robot visits the page again. Ensure that the \`robots.txt\` file is not preventing revisits.
* Some values are mutually exclusive, like \`index\` and \`noindex\`, or \`follow\` and \`nofollow\`. In these cases the robot's behaviour is undefined and may vary between them.
* Some crawler robots, like Google, Yahoo and Bing, support the same values for the HTTP header \`X-Robots-Tag\`; this allows non-HTML documents like images to use these rules.
* \`slurp\`, is a synonym of \`robots\`, but only for Slurp - the crawler for Yahoo Search.
* \`viewport\`, which gives hints about the size of the initial size of the [viewport](https://developer.mozilla.org/en-US/docs/Glossary/viewport "viewport: A viewport represents a polygonal (normally rectangular) area in computer graphics that is currently being viewed. In web browser terms, it refers to the part of the document you're viewing which is currently visible in its window (or the screen, if the document is being viewed in full screen mode). Content outside the viewport is not visible onscreen until scrolled into view."). Used by mobile devices only.
Values for the content of \`<meta name="viewport">\`
Value
Possible subvalues
Description
\`width\`
A positive integer number, or the text \`device-width\`
Defines the pixel width of the viewport that you want the web site to be rendered at.
\`height\`
A positive integer, or the text \`device-height\`
Defines the height of the viewport. Not used by any browser.
\`initial-scale\`
A positive number between \`0.0\` and \`10.0\`
Defines the ratio between the device width (\`device-width\` in portrait mode or \`device-height\` in landscape mode) and the viewport size.
\`maximum-scale\`
A positive number between \`0.0\` and \`10.0\`
Defines the maximum amount to zoom in. It must be greater or equal to the \`minimum-scale\` or the behaviour is undefined. Browser settings can ignore this rule and iOS10+ ignores it by default.
\`minimum-scale\`
A positive number between \`0.0\` and \`10.0\`
Defines the minimum zoom level. It must be smaller or equal to the \`maximum-scale\` or the behaviour is undefined. Browser settings can ignore this rule and iOS10+ ignores it by default.
\`user-scalable\`
\`yes\` or \`no\`
If set to \`no\`, the user is not able to zoom in the webpage. The default is \`yes\`. Browser settings can ignore this rule, and iOS10+ ignores it by default.
Specification
Status
Comment
[CSS Device Adaptation
The definition of '<meta name="viewport">' in that specification.](https://drafts.csswg.org/css-device-adapt/#viewport-meta)
Working Draft
Non-normatively describes the Viewport META element
See also: [\`@viewport\`](https://developer.mozilla.org/en-US/docs/Web/CSS/@viewport "The @viewport CSS at-rule lets you configure the viewport through which the document is viewed. It's primarily used for mobile devices, but is also used by desktop browsers that support features like "snap to edge" (such as Microsoft Edge).")
**Notes:**
* Though unstandardized, this declaration is respected by most mobile browsers due to de-facto dominance.
* The default values may vary between devices and browsers.
* To learn about this declaration in Firefox for Mobile, see [this article](https://developer.mozilla.org/en-US/docs/Mobile/Viewport_meta_tag "Mobile/Viewport meta tag").`}},{name:"http-equiv",description:{kind:"markdown",value:'Defines a pragma directive. The attribute is named `**http-equiv**(alent)` because all the allowed values are names of particular HTTP headers:\n\n* `"content-language"` \n Defines the default language of the page. It can be overridden by the [lang](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang) attribute on any element.\n \n **Warning:** Do not use this value, as it is obsolete. Prefer the `lang` attribute on the [`<html>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/html "The HTML <html> element represents the root (top-level element) of an HTML document, so it is also referred to as the root element. All other elements must be descendants of this element.") element.\n \n* `"content-security-policy"` \n Allows page authors to define a [content policy](https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives) for the current page. Content policies mostly specify allowed server origins and script endpoints which help guard against cross-site scripting attacks.\n* `"content-type"` \n Defines the [MIME type](https://developer.mozilla.org/en-US/docs/Glossary/MIME_type) of the document, followed by its character encoding. It follows the same syntax as the HTTP `content-type` entity-header field, but as it is inside a HTML page, most values other than `text/html` are impossible. Therefore the valid syntax for its `content` is the string \'`text/html`\' followed by a character set with the following syntax: \'`; charset=_IANAcharset_`\', where `IANAcharset` is the _preferred MIME name_ for a character set as [defined by the IANA.](https://www.iana.org/assignments/character-sets)\n \n **Warning:** Do not use this value, as it is obsolete. Use the [`charset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-charset) attribute on the [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta "The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.") element.\n \n **Note:** As [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta "The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.") can\'t change documents\' types in XHTML or HTML5\'s XHTML serialization, never set the MIME type to an XHTML MIME type with `<meta>`.\n \n* `"refresh"` \n This instruction specifies:\n * The number of seconds until the page should be reloaded - only if the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) attribute contains a positive integer.\n * The number of seconds until the page should redirect to another - only if the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) attribute contains a positive integer followed by the string \'`;url=`\', and a valid URL.\n* `"set-cookie"` \n Defines a [cookie](https://developer.mozilla.org/en-US/docs/cookie) for the page. Its content must follow the syntax defined in the [IETF HTTP Cookie Specification](https://tools.ietf.org/html/draft-ietf-httpstate-cookie-14).\n \n **Warning:** Do not use this instruction, as it is obsolete. Use the HTTP header [`Set-Cookie`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) instead.'}},{name:"content",description:{kind:"markdown",value:"This attribute contains the value for the [`http-equiv`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-http-equiv) or [`name`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-name) attribute, depending on which is used."}},{name:"charset",description:{kind:"markdown",value:'This a
Decode the image synchronously for atomic presentation with other content.
\`async\`
Decode the image asynchronously to reduce delay in presenting other content.
\`auto\`
Default mode, which indicates no preference for the decoding mode. The browser decides what is best for the user.`},{name:"importance",description:"Indicates the relative importance of the resource. Priority hints are delegated using the values:"},{name:"importance",description:"`auto`: Indicates\xA0**no\xA0preference**. The browser may use its own heuristics to decide the priority of the image.\n\n`high`: Indicates to the\xA0browser\xA0that the image is of\xA0**high** priority.\n\n`low`:\xA0Indicates to the\xA0browser\xA0that the image is of\xA0**low** priority."},{name:"intrinsicsize",description:"This attribute tells the browser to ignore the actual intrinsic size of the image and pretend it\u2019s the size specified in the attribute. Specifically, the image would raster at these dimensions and `naturalWidth`/`naturalHeight` on images would return the values specified in this attribute. [Explainer](https://github.com/ojanvafai/intrinsicsize-attribute), [examples](https://googlechrome.github.io/samples/intrinsic-size/index.html)"},{name:"referrerpolicy",description:"A string indicating which referrer to use when fetching the resource:\n\n* `no-referrer:` The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent.\n* `no-referrer-when-downgrade:` No `Referer` header will be sent when navigating to an origin without TLS (HTTPS). This is a user agent\u2019s default behavior if no policy is otherwise specified.\n* `origin:` The `Referer` header will include the page of origin's scheme, the host, and the port.\n* `origin-when-cross-origin:` Navigating to other origins will limit the included referral data to the scheme, the host and the port, while navigating from the same origin will include the referrer's full path.\n* `unsafe-url:` The `Referer` header will include the origin and the path, but not the fragment, password, or username. This case is unsafe because it can leak origins and paths from TLS-protected resources to insecure origins."},{name:"sizes",description:"A list of one or more strings separated by commas indicating a set of source sizes. Each source size consists of:\n\n1. a media condition. This must be omitted for the last item.\n2. a source size value.\n\nSource size values specify the intended display size of the image. User agents use the current source size to select one of the sources supplied by the `srcset` attribute, when those sources are described using width ('`w`') descriptors. The selected source size affects the intrinsic size of the image (the image\u2019s display size if no CSS styling is applied). If the `srcset` attribute is absent, or contains no values with a width (`w`) descriptor, then the `sizes` attribute has no effect."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/img"}]},{name:"iframe",description:{kind:"markdown",value:"The iframe element represents a nested browsing context."},attributes:[{name:"src",description:{kind:"markdown",value:'The URL of the page to embed. Use a value of `about:blank` to embed an empty page that conforms to the [same-origin policy](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy#Inherited_origins). Also note that programatically removing an `<iframe>`\'s src attribute (e.g. via [`Element.removeAttribute()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute "The Element method removeAttribute() removes the attribute with the specified name from the element.")) causes `about:blank` to be loaded in the frame in Firefox (from version 65), Chromium-based browsers, and Safari/iOS.'}},{name:"srcdoc",description:{kind:"markdown",value:"Inline HTML to embed, overriding the `src` attribute. If a browser does no
\`auto\` (default)
No preference. The browser uses its own heuristics to decide the priority of the resource.
\`high\`
The resource should be downloaded before other lower-priority page resources.
\`low\`
The resource should be downloaded after other higher-priority page resources.`},{name:"referrerpolicy",description:'Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer) to send when fetching the frame\'s resource:\n\n* `no-referrer`: The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer "The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.") header will not be sent.\n* `no-referrer-when-downgrade` (default): The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer "The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.") header will not be sent to [origin](https://developer.mozilla.org/en-US/docs/Glossary/origin "origin: Web content\'s origin is defined by the scheme (protocol), host (domain), and port of the URL used to access it. Two objects have the same origin only when the scheme, host, and port all match.")s without [TLS](https://developer.mozilla.org/en-US/docs/Glossary/TLS "TLS: Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), is a protocol used by applications to communicate securely across a network, preventing tampering with and eavesdropping on email, web browsing, messaging, and other protocols.") ([HTTPS](https://developer.mozilla.org/en-US/docs/Glossary/HTTPS "HTTPS: HTTPS (HTTP Secure) is an encrypted version of the HTTP protocol. It usually uses SSL or TLS to encrypt all communication between a client and a server. This secure connection allows clients to safely exchange sensitive data with a server, for example for banking activities or online shopping.")).\n* `origin`: The sent referrer will be limited to the origin of the referring page: its [scheme](https://developer.mozilla.org/en-US/docs/Archive/Mozilla/URIScheme), [host](https://developer.mozilla.org/en-US/docs/Glossary/host "host: A host is a device connected to the Internet (or a local network). Some hosts called servers offer additional services like serving webpages or storing files and emails."), and [port](https://developer.mozilla.org/en-US/docs/Glossary/port "port: For a computer connected to a network with an IP address, a port is a communication endpoint. Ports are designated by numbers, and below 1024 each port is associated by default with a specific protocol.").\n* `origin-when-cross-origin`: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path.\n* `same-origin`: A referrer will be sent for [same origin](https://developer.mozilla.org/en-US/docs/Glossary/Same-origin_policy "same origin: The same-origin policy is a critical security mechanism that restricts how a document or script loaded from one origin can interact with a resource from another origin."), but cross-origin requests will contain no referrer information.\n* `strict-origin`: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS\u2192HTTPS), but don\'t send it to a less secure destination (HTTPS\u2192HTTP).\n* `strict-origin-when-cross-origin`: Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS\u2192HTTPS), and send no header to a less secure destination (HTTPS\u2192HTTP).\n* `unsafe-url`: The referrer will include the origin _and_ the path (but not the [fragment](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/hash), [password](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUt
* data: Default value. The value is passed to the object's implementation as a string.
* ref: The value is a URI to a resource where run-time values are stored.
* object: An ID of another [\`<object>\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object "The HTML <object> element represents an external resource, which can be treated as an image, a nested browsing context, or a resource to be handled by a plugin.") in the same document.`}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/param"}]},{name:"video",description:{kind:"markdown",value:"A video element is used for playing videos or movies, and audio files with captions."},attributes:[{name:"src"},{name:"crossorigin",valueSet:"xo"},{name:"poster"},{name:"preload",valueSet:"pl"},{name:"autoplay",valueSet:"v",description:{kind:"markdown",value:"A Boolean attribute; if specified, the video automatically begins to play back as soon as it can do so without stopping to finish loading the data."}},{name:"mediagroup"},{name:"loop",valueSet:"v"},{name:"muted",valueSet:"v"},{name:"controls",valueSet:"v"},{name:"width"},{name:"height"}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/video"}]},{name:"audio",description:{kind:"markdown",value:"An audio element represents a sound or audio stream."},attributes:[{name:"src",description:{kind:"markdown",value:'The URL of the audio to embed. This is subject to [HTTP access controls](https://developer.mozilla.org/en-US/docs/HTTP_access_control). This is optional; you may instead use the [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source "The HTML <source> element specifies multiple media resources for the <picture>, the <audio> element, or the <video> element.") element within the audio block to specify the audio to embed.'}},{name:"crossorigin",valueSet:"xo",description:{kind:"markdown",value:'This enumerated attribute indicates whether to use CORS to fetch the related image. [CORS-enabled resources](https://developer.mozilla.org/en-US/docs/CORS_Enabled_Image) can be reused in the [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas "Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.") element without being _tainted_. The allowed values are:\n\nanonymous\n\nSends a cross-origin request without a credential. In other words, it sends the `Origin:` HTTP header without a cookie, X.509 certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (by not setting the `Access-Control-Allow-Origin:` HTTP header), the image will be _tainted_, and its usage restricted.\n\nuse-credentials\n\nSends a cross-origin request with a credential. In other words, it sends the `Origin:` HTTP header with a cookie, a certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (through `Access-Control-Allow-Credentials:` HTTP header), the image will be _tainted_ and its usage restricted.\n\nWhen not present, the resource is fetched without a CORS request (i.e. without sending the `Origin:` HTTP header), preventing its non-tainted used in [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas "Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.") elements. If invalid, it is handled as if the enumerated keyword **anonymous** was used. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes) for additional information.'}},{name:"preload",valueSet:"pl",description:{kind:"markdown",value:"This enumerated attribute is intended to provide a hint to the browser about what the author thinks will lead to the best user experience. It may have one of the following values:\n\n* `none`: Indicates that the audio should not be preloaded.\n* `metadata`: Indicates that only audio metadata (e.g. length) is fetched.\n* `auto`: Indicates that the whole audio file can be downloaded, even if the user is not expected to use it.\n* _empty string_: A synonym of the `auto` value.\
**Note**: Sites that automatically play audio (or videos with an audio track) can be an unpleasant experience for users, so should be avoided when possible. If you must offer autoplay functionality, you should make it opt-in (requiring a user to specifically enable it). However, this can be useful when creating media elements whose source will be set at a later time, under user control.`}},{name:"mediagroup"},{name:"loop",valueSet:"v",description:{kind:"markdown",value:"A Boolean attribute:\xA0if specified, the audio player will\xA0automatically seek back to the start\xA0upon reaching the end of the audio."}},{name:"muted",valueSet:"v",description:{kind:"markdown",value:"A Boolean attribute that indicates whether the audio will be initially silenced. Its default value is `false`."}},{name:"controls",valueSet:"v",description:{kind:"markdown",value:"If this attribute is present, the browser will offer controls to allow the user to control audio playback, including volume, seeking, and pause/resume playback."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/audio"}]},{name:"source",description:{kind:"markdown",value:"The source element allows authors to specify multiple alternative media resources for media elements. It does not represent anything on its own."},attributes:[{name:"src",description:{kind:"markdown",value:'Required for [`<audio>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio "The HTML <audio> element is used to embed sound content in documents. It may contain one or more audio sources, represented using the src attribute or the <source> element:\xA0the browser will choose the most suitable one. It can also be the destination for streamed media, using a MediaStream.") and [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video "The HTML Video element (<video>) embeds a media player which supports video playback into the document."), address of the media resource. The value of this attribute is ignored when the `<source>` element is placed inside a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture "The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.") element.'}},{name:"type",description:{kind:"markdown",value:"The MIME-type of the resource, optionally with a `codecs` parameter. See [RFC 4281](https://tools.ietf.org/html/rfc4281) for information about how to specify codecs."}},{name:"sizes",description:'Is a list of source sizes that describes the final rendered width of the image represented by the source. Each source size consists of a comma-separated list of media condition-length pairs. This information is used by the browser to determine, before laying the page out, which image defined in [`srcset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source#attr-srcset) to use. \nThe `sizes` attribute has an effect only when the [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source "The HTML <source> element specifies multiple media resources for the <picture>, the <audio> element, or the <video> element.") element is the direct child of a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture "The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.") element.'},{name:"srcset",description:"A list of one or more strings separated by commas indicating a set of possible images represented by the source for the browser to use. Each string is composed of:\n\n1. one URL to an image,\n2. a width descriptor, that is a positive integer directly followed by `'w'`. The default value, if missing, is the infinity.\n3. a pixel density descriptor, that is a positive floating number directly followed by `'x'`. The default value, if missing, is `1x`.\n\nEach string in the list must have at least a width descriptor or a pixel density descriptor
\`left\`
The caption is displayed to the left of the table.
\`top\`
The caption is displayed above the table.
\`right\`
The caption is displayed to the right of the table.
\`bottom\`
The caption is displayed below the table.
**Usage note:** Do not use this attribute, as it has been deprecated. The [\`<caption>\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption "The HTML Table Caption element (<caption>) specifies the caption (or title) of a table, and if used is always the first child of a <table>.") element should be styled using the [CSS](https://developer.mozilla.org/en-US/docs/CSS) properties [\`caption-side\`](https://developer.mozilla.org/en-US/docs/Web/CSS/caption-side "The caption-side CSS property puts the content of a table's <caption> on the specified side. The values are relative to the writing-mode of the table.") and [\`text-align\`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.").`}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/caption"}]},{name:"colgroup",description:{kind:"markdown",value:"The colgroup element represents a group of one or more columns in the table that is its parent, if it has a parent and that is a table element."},attributes:[{name:"span"},{name:"align",description:'This enumerated attribute specifies how horizontal alignment of each column cell content will be handled. Possible values are:\n\n* `left`, aligning the content to the left of the cell\n* `center`, centering the content in the cell\n* `right`, aligning the content to the right of the cell\n* `justify`, inserting spaces into the textual content so that the content is justified in the cell\n* `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-charoff) attributes Unimplemented (see [bug\xA02212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 "character alignment not implemented (align=char, charoff=, text-align:<string>)")).\n\nIf this attribute is not set, the `left` value is assumed. The descendant [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col "The HTML <col> element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a <colgroup> element.") elements may override this value using their own [`align`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-align) attribute.\n\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values:\n * Do not try to set the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property on a selector giving a [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup "The HTML <colgroup> element defines a group of columns within a table.") element. Because [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td "The HTML <td> element defines a cell of a table that contains data. It participates in the table model.") elements are not descendant of the [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup "The HTML <colgroup> element defines a group of columns within a table.") element, they won\'t inherit it.\n * If the table doesn\'t use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, use one `td:nth-child(an+b)` CSS selector per column, where a is the total number of the columns in the table and b is the ordinal position of this column in the table. Only after this selector the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an i
**Note:** Do not use this attribute as it is obsolete in the latest standard. Alternatively, you can put the abbreviated description inside the cell and place the long content in the **title** attribute.`},{name:"align",description:'This enumerated attribute specifies how the cell content\'s horizontal alignment will be handled. Possible values are:\n\n* `left`: The content is aligned to the left of the cell.\n* `center`: The content is centered in the cell.\n* `right`: The content is aligned to the right of the cell.\n* `justify` (with text only): The content is stretched out inside the cell so that it covers its entire width.\n* `char` (with text only): The content is aligned to a character inside the `<th>` element with minimal offset. This character is defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-charoff) attributes Unimplemented (see [bug\xA02212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 "character alignment not implemented (align=char, charoff=, text-align:<string>)")).\n\nThe default value when this attribute is not specified is `left`.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values, apply the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property to the element.\n* To achieve the same effect as the `char` value, give the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property the same value you would use for the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-char). Unimplemented in CSS3.'},{name:"axis",description:"This attribute contains a list of space-separated strings. Each string is the `id` of a group of cells that this header applies to.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard."},{name:"bgcolor",description:`This attribute defines the background color of each cell in a column. It consists of a 6-digit hexadecimal code as defined in [sRGB](https://www.w3.org/Graphics/Color/sRGB) and is prefixed by '#'. This attribute may be used with one of sixteen predefined color strings:
\xA0
\`black\` = "#000000"
\xA0
\`green\` = "#008000"
\xA0
\`silver\` = "#C0C0C0"
\xA0
\`lime\` = "#00FF00"
\xA0
\`gray\` = "#808080"
\xA0
\`olive\` = "#808000"
\xA0
\`white\` = "#FFFFFF"
\xA0
\`yellow\` = "#FFFF00"
\xA0
\`maroon\` = "#800000"
\xA0
\`navy\` = "#000080"
\xA0
\`red\` = "#FF0000"
\xA0
\`blue\` = "#0000FF"
\xA0
\`purple\` = "#800080"
\xA0
\`teal\` = "#008080"
\xA0
\`fuchsia\` = "#FF00FF"
\xA0
\`aqua\` = "#00FFFF"
**Note:** Do not use this attribute, as it is non-standard and only implemented in some versions of Microsoft Internet Explorer: The [\`<td>\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td "The HTML <td> element defines a cell of a table that contains data. It participates in the table model.") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). To create a similar effect use the [\`background-color\`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color "The background-color CSS property sets the background color of an element.") property in [CSS](https://developer.mozilla.org/en-US/docs/CSS) instead.`}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/td"}]},{name:"th",description:{kind:"markdown",value:"The th element represents a header cell in a table."},attributes:[{name:"colspan"},{name:"rowspan"},{name:"headers"},{name:"scope",valueSet:"s"},{name:"sorted"},{name:"abbr",description:{kind:"markdown",value:"This attribute contains a short abbreviated description of the cell's content. Some user-agents, such as speech readers, may present this description before the content itself."}},{name:"align",description:'This enumerated attribute specifies how the cell content\'s horizontal alignment will be handled. Possible values are:\n\n* `left`: The content is aligned to the left of the cell.\n* `center`: The content is centered in the cell.\n* `right`: The content is aligned to the right of the cell.\n* `justify` (with text only): The content is stretched out inside the cell so that it covers its entire width.\n* `char` (with text only): The content is aligned to a character inside the `<th>` element with minimal offset. This character is defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-charoff) attributes.\n\nThe default value when this attribute is not specified is `left`.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values, apply the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property to the element.\n* To achieve the same effect as the `char` value, give the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align "The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property the same value you would use for the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-char). Unimplemented in CSS3.'},{name:"axis",description:"This attribute contains a list of space-separated strings. Each string is the `id` of a group of cells that this header applies to.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard: use the [`scope`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-scope) attribute instead."},{name:"bgcolor",description:`This attribute defines the background color of each cell in a column. It consists of a 6-digit hexadecimal code as defined in [sRGB](https://www.w3.org/Graphics/Color/sRGB) and is prefixed by '#'. This attribute may be used with one of sixteen predefined color strings:
\xA0
\`black\` = "#000000"
\xA0
\`green\` = "#008000"
\xA0
\`silver\` = "#C0C0C0"
\xA0
\`lime\` = "#00FF00"
\xA0
\`gray\` = "#808080"
\xA0
\`olive\` = "#808000"
\xA0
\`white\` = "#FFFFFF"
\xA0
\`yellow\` = "#FFFF00"
\xA0
\`maroon\` = "#800000"
\xA0
\`navy\` = "#000080"
\xA0
\`red\` = "#FF0000"
\xA0
\`blue\` = "#0000FF"
\xA0
\`purple\` = "#800080"
\xA0
\`teal\` = "#008080"
\xA0
\`fuchsia\` = "#FF00FF"
\xA0
\`aqua\` = "#00FFFF"
**Note:** Do not use this attribute, as it is non-standard and only implemented in some versions of Microsoft Internet Explorer: The [\`<th>\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th "The HTML <th> element defines a cell as header of a group of table cells. The exact nature of this group is defined by the scope and headers attributes.") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS). To create a similar effect use the [\`background-color\`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color "The background-color CSS property sets the background color of an element.") property in [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS) instead.`}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/th"}]},{name:"form",description:{kind:"markdown",value:"The form element represents a collection of form-associated elements, some of which can represent editable values that can be submitted to a server for processing."},attributes:[{name:"accept-charset",description:{kind:"markdown",value:'A space- or comma-delimited list of character encodings that the server accepts. The browser uses them in the order in which they are listed. The default value, the reserved string `"UNKNOWN"`, indicates the same encoding as that of the document containing the form element. \nIn previous versions of HTML, the different character encodings could be delimited by spaces or commas. In HTML5, only spaces are allowed as delimiters.'}},{name:"action",description:{kind:"markdown",value:'The URI of a program that processes the form information. This value can be overridden by a [`formaction`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formaction) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button "The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.") element.'}},{name:"autocomplete",valueSet:"o",description:{kind:"markdown",value:"Indicates whether input elements can by default have their values automatically completed by the browser. This setting can be overridden by an `autocomplete` attribute on an element belonging to the form. Possible values are:\n\n* `off`: The user must explicitly enter a value into each field for every use, or the document provides its own auto-completion method; the browser does not automatically complete entries.\n* `on`: The browser can automatically complete values based on values that the user has previously entered in the form.\n\nFor most modern browsers (including Firefox 38+, Google Chrome 34+, IE 11+) setting the autocomplete attribute will not prevent a browser's password manager from asking the user if they want to store login fields (username and password), if the user permits the storage the browser will autofill the login the next time the user visits the page. See [The autocomplete attribute and login fields](https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion#The_autocomplete_attribute_and_login_fields)."}},{name:"enctype",valueSet:"et",description:{kind:"markdown",value:'When the value of the `method` attribute is `post`, enctype is the [MIME type](https://en.wikipedia.org/wiki/Mime_type) of content that is used to submit the form to the server. Possible values are:\n\n* `application/x-www-form-urlencoded`: The default value if the attribute is not specified.\n* `multipart/form-data`: The value used for an [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input "The HTML <input> element is used to create interactive controls f
This attribute must not be used if the \`src\` attribute is absent (i.e. for inline scripts). If it is included in this case it will have no effect.
Browsers usually assume the worst case scenario and load scripts synchronously, (i.e. \`async="false"\`) during HTML parsing.
Dynamically inserted scripts (using [\`document.createElement()\`](https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement "In an HTML document, the document.createElement() method creates the HTML element specified by tagName, or an HTMLUnknownElement if tagName isn't recognized.")) load asynchronously by default, so to turn on synchronous loading (i.e. scripts load in the order they were inserted) set \`async="false"\`.
See [Browser compatibility](#Browser_compatibility) for notes on browser support. See also [Async scripts for asm.js](https://developer.mozilla.org/en-US/docs/Games/Techniques/Async_scripts).`}},{name:"defer",valueSet:"v",description:{kind:"markdown",value:'This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the document has been parsed, but before firing [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded "/en-US/docs/Web/Events/DOMContentLoaded").\n\nScripts with the `defer` attribute will prevent the `DOMContentLoaded` event from firing until the script has loaded and finished evaluating.\n\nThis attribute must not be used if the `src` attribute is absent (i.e. for inline scripts), in this case it would have no effect.\n\nTo achieve a similar effect for dynamically inserted scripts use `async="false"` instead. Scripts with the `defer` attribute will execute in the order in which they appear in the document.'}},{name:"crossorigin",valueSet:"xo",description:{kind:"markdown",value:'Normal `script` elements pass minimal information to the [`window.onerror`](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror "The onerror property of the GlobalEventHandlers mixin is an EventHandler that processes error events.") for scripts which do not pass the standard [CORS](https://developer.mozilla.org/en-US/docs/Glossary/CORS "CORS: CORS (Cross-Origin Resource Sharing) is a system, consisting of transmitting HTTP headers, that determines whether browsers block frontend JavaScript code from accessing responses for cross-origin requests.") checks. To allow error logging for sites which use a separate domain for static media, use this attribute. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for a more descriptive explanation of its valid arguments.'}},{name:"nonce",description:{kind:"markdown",value:"A cryptographic nonce (number used once) to whitelist inline scripts in a [script-src Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src). The server must generate a unique nonce value each time it transmits a policy. It is critical to provide a nonce that cannot be guessed as bypassing a resource's policy is otherwise trivial."}},{name:"integrity",description:"This attribute contains inline metadata that a user agent can use to verify that a fetched resource has been delivered free of unexpected manipulation. See [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity)."},{name:"nomodule",description:"This Boolean attribute is set to indicate that the script should not be executed in browsers that support [ES2015 modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) \u2014 in effect, this can be used to serve fallback scripts to older browsers that do not support modular JavaScript code."},{name:"referrerpolicy",description:'Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer) to send when fetching the script, or resources fetched by the script:\n\n* `no-referrer`: The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer "The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.") header will not be sent.\n* `no-referrer-when-downgrade` (default): The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer "The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.") header will not
* a _negative value_ means that the element should be focusable, but should not be reachable via sequential keyboard navigation;
* \`0\` means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;
* a _positive value_ means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the [**tabindex**](#attr-tabindex). If several elements share the same tabindex, their relative order follows their relative positions in the document.`},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/tabindex"}]},{name:"title",description:{kind:"markdown",value:"Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/title"}]},{name:"translate",description:{kind:"markdown",value:"An enumerated attribute that is used to specify whether an element's attribute values and the values of its [`Text`](/en-US/docs/Web/API/Text \"The Text interface represents the textual content of Element or Attr. If an element has no markup within its content, it has a single child implementing Text that contains the element's text. However, if the element contains markup, it is parsed into information items and Text nodes that form its children.\") node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:\n\n* empty string and `yes`, which indicates that the element will be translated.\n* `no`, which indicates that the element will not be translated."},valueSet:"y",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/translate"}]},{name:"onabort",description:{kind:"markdown",value:"The loading of a resource has been aborted."}},{name:"onblur",description:{kind:"markdown",value:"An element has lost focus (does not bubble)."}},{name:"oncanplay",description:{kind:"markdown",value:"The user agent can play the media, but estimates that not enough data has been loaded to play the media up to its end without having to stop for further buffering of content."}},{name:"oncanplaythrough",description:{kind:"markdown",value:"The user agent can play the media up to its end without having to stop for further buffering of content."}},{name:"onchange",description:{kind:"markdown",value:"The change event is fired for <input>, <select>, and <textarea> elements when a change to the element's value is committed by the user."}},{name:"onclick",description:{kind:"markdown",value:"A pointing device button has been pressed and released on an element."}},{name:"oncontextmenu",description:{kind:"markdown",value:"The right button of the mouse is clicked (before the context menu is displayed)."}},{name:"ondblclick",description:{kind:"markdown",value:"A pointing device button is clicked twice on an element."}},{name:"ondrag",description:{kind:"markdown",value:"An element or text selection is being dragged (every 350ms)."}},{name:"ondragend",description:{kind:"markdown",value:"A drag operation is being ended (by releasing a mouse button or hitting the escape key)."}},{name:"ondragenter",description:{kind:"markdown",value:"A dragged element or text selection enters a valid drop target."}},{name:"ondragleave",description:{kind:"markdown",value:"A dragged element or text selection leaves a valid drop target."}},{name:"ondragover",description:{kind:"markdown",value:"An element or text selection is being dragged over a valid drop target (every 350ms)."}},{name:"ondragstart",description:{kind:"markdown",value:"The user starts dragging an element or text selection."}},{name:"ondrop",description:{kind:"markdown",value:"An element is dropped on a valid drop target."}},{name:"ondurationchange",description:{kind:"markdown",value:"The duration attribute has been updated."}},{name:"onemptied",description:{kind:"markdown",value:"The media has become empty; for example, this event is sent if the media has already been loaded (or partially loaded), and the load() method is called to reload it."}},{name:"